extjs5中使用echart讓圖表更豐富
這次在專案中想讓圖表看起來更好看加入了echart的圖表進來,我用的extjs的視覺化工具下載地址:https://www.sencha.com/products/architect/download/
這個工具是收費的有30天的試用期;在專案中使用echarts的:
1.匯入echarts的包
chart資料夾是單個檔案匯入的時候用的,dist資料夾是開發用的裡面包含了chart資料夾而且所有檔案都是經過壓縮後的,source資料夾和dist資料夾目錄結構相同唯一不同的是source下的檔案是沒有壓縮過的用於除錯的,在專案正式釋出的時候是用不著的。
接下來是檔案的引用
這裡我引用是這四個檔案,其實引用一個echarts-all.js就可以了,它裡面已經包含了我們要使用的所有chart圖表了,如果你不想一次引入全部的而是想只引入自己需要繪製的chart圖表的js就足夠了就需要用上面的方式了,esl是echarts的依賴包如果你在專案中沒有引入的話可能會報define沒有找到的錯,echarts就不說了主檔案,line是你想要繪製的圖表根據需要引入,這些以後還要做一次處理echarts
var echarts; require(['echarts'], function (ec){ echarts = ec; }); // 是的,把echarts載入後儲存起來作為名稱空間使用這個在官網有講,當然,你也可以在自己的程式碼中處理
var div = document.getElementById('panelChart');
var myChart = require('echarts').init(div);
如果你在使用的echarts作為名稱空間,直接這樣寫就可以了,如果用的是echarts-all這個檔案也可直接用下面的寫法
var div = document.getElementById('panelChart');
var myChart = echarts.init(div);
最後是在extjs中使用圖表
1.首先,在extjs中建立一個panel在panel的html屬性中寫一個div
需要說明的echarts在渲染的時候需要明確的給出需要渲染的div的寬高
2.該panel寫一個afterRander方法,進行渲染,這個地方和在script中寫法是一樣的沒有什麼區別
原始碼:
var div = document.getElementById('panelChart');
var myChart = require('echarts').init(div);
//初始化資料
var options = {
title : {
text: '羅納爾多 vs 舍普琴科',
subtext: '完全實況球員資料'
},
tooltip : {
trigger: 'axis'
},
legend: {
x : 'center',
data:['羅納爾多','舍普琴科']
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
restore : {show: true},
saveAsImage : {show: true}
}
},
calculable : true,
polar : [
{
indicator : [
{text : '進攻', max : 100},
{text : '防守', max : 100},
{text : '體能', max : 100},
{text : '速度', max : 100},
{text : '力量', max : 100},
{text : '技巧', max : 100}
],
radius : 130
}
],
series : [
{
name: '完全實況球員資料',
type: 'radar',
itemStyle: {
normal: {
areaStyle: {
type: 'default'
}
}
},
data : [
{
value : [97, 42, 88, 94, 90, 86],
name : '舍普琴科'
},
{
value : [97, 32, 74, 95, 88, 92],
name : '羅納爾多'
}
]
}
]
};
myChart.setOption(options, true); //為echarts物件載入資料
需要注意的是載入渲染的方法的時間,網上通常說的是用initComponent方法,其它的寫法我不知道,但是在視覺化中建議不要用該方法,原因是該方法在載入的時候我們的div還沒有生成會報空