如何使用echart中獲取canvas繪製到自己的canvas上去
echart是一個非常好的html5的元件,可以用於分析、報表等等。但是echart有一個很大缺點(這也不能怨echart),它不能元件疊加顯示在一個canvas中,在一個canvas中顯示多個元件是很有必要的,這個時候就想如何能使用echart生成元件,然後顯示在之間的canvas中。首先想到的肯定是離屏canvas。echart歸根結底是使用html5中的canvas實現的,肯定支援離屏canvas這種操作。
有了這個想法就很簡單了,比較重要的就是獲取echart的canvas元件或圖片
獲取echart的imgge:
var img = new Image();
img.src = myChart.getDataURL({
pixelRatio: 2,
backgroundColor: '#fff'
});
這中方式是獲取echart的圖片
獲取echart的canvas:
var offcanvas= myChart.getRenderedCanvas({
pixelRatio: 2,
backgroundColor: '#fff'
});
有了種兩種方式再實現離屏canvas就很簡單了
下面給出一個簡單的示例(獲取canvas的):
html頁面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="../js/jquery/jquery-1.9.2.min.js"></script>
<script type="text/javascript" src="../js/echart/echarts.min.js"></script>
<script type="text/javascript" src="../js/echart/china.js"></script>
<script type="text/javascript" src="../js/effsctScatter-map.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height:400px;"></div>
<canvas id="canvas"></canvas>
</body>
</html>
js檔案:
/**
* Created by se7en on 2016/2/4.
*/
$(document).ready(function () {
var option = {
legend: {
data:['sin','cos']
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataZoom : {show: true},
dataView : {show: true, readOnly: false},
restore : {show: true},
saveAsImage : {show: true}
}
},
xAxis : [
{
type : 'value',
scale:true
}
],
yAxis : [
{
type : 'value',
scale:true
}
],
series : [
{
name:'sin',
type:'scatter',
large: true,
symbolSize: 3,
data: (function () {
var d = [];
var len = 10000;
var x = 0;
while (len--) {
x = (Math.random() * 10).toFixed(3) - 0;
d.push([
x,
//Math.random() * 10
(Math.sin(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
]);
}
//console.log(d)
return d;
})()
},
{
name:'cos',
type:'scatter',
large: true,
symbolSize: 3,
data: (function () {
var d = [];
var len = 10000;
var x = 0;
while (len--) {
x = (Math.random() * 10).toFixed(3) - 0;
d.push([
x,
//Math.random() * 10
(Math.cos(x) - x * (len % 2 ? 0.1 : -0.1) * Math.random()).toFixed(3) - 0
]);
}
//console.log(d)
return d;
})()
}
]
};
var myChart = echarts.init(document.getElementById('main'));
// 使用剛指定的配置項和資料顯示圖表。
myChart.setOption(option);
$('#main').hide();
var canvas = document.getElementById("canvas");
canvas.width = 800;
canvas.height = 600;
var ctx = canvas.getContext('2d');
var offcanvas = myChart.getRenderedCanvas({
pixelRatio: 2,
backgroundColor: '#fff'
});
ctx.drawImage(offcanvas,0,0);
});
至於echart獲取canvas中的引數大家可以自己嘗試一下,可能會有不同的結果相關文章
- canvas 繪製矩形Canvas
- canvas 繪製扇形Canvas
- canvas 繪製文字Canvas
- 使用canvas繪製圓弧動畫Canvas動畫
- canvas繪製動畫的技巧Canvas動畫
- html5中canvas繪製矩形HTMLCanvas
- canvas 繪製線條Canvas
- canvas 繪製圓形Canvas
- canvas繪製流星效果Canvas
- canvas繪製直線Canvas
- canvas繪製不重合的圓Canvas
- 使用 HTML5 Canvas 繪製的水滴效果HTMLCanvas
- canvas核心技術-如何繪製圖形Canvas
- canvas核心技術-如何繪製線段Canvas
- 用Flutter的Canvas來自己繪製柱狀頻譜圖FlutterCanvas
- 在Canvas中繪製Geojson資料CanvasJSON
- html5中canvas繪製圓形HTMLCanvas
- html5中canvas繪製線段HTMLCanvas
- Canvas 繪製雷達圖Canvas
- canvas 繪製立體圓環Canvas
- canvas 繪製文字詳解Canvas
- canvas 繪製圓角矩形Canvas
- canvas 繪製矩形缺角Canvas
- canvas 繪製雙線技巧Canvas
- canvas繪製風車效果Canvas
- canvas繪製笑臉表情Canvas
- canvas繪製太陽系Canvas
- canvas繪製矩形框Canvas
- Canvas 繪製風向動畫Canvas動畫
- 使用canvas繪製圓形進度條Canvas
- HTML5使用canvas繪製圖形HTMLCanvas
- 【Web前端基礎知識】如何使用Canvas繪製圓形Web前端Canvas
- html5中canvas線段繪製太陽花HTMLCanvas
- html5中的canvas繪製橢圓的方法HTMLCanvas
- 使用canvas繪製dribble風格水波浪Canvas
- 使用Canvas繪製簡單工程符號(續)Canvas符號
- Canvas(3)---繪製餅狀圖Canvas
- canvas系列教程之繪製矩形Canvas