最終效果和示例之間主要需要修改的兩個大的地方:
- 不同顏色的圓弧,指標(biāo)的值所處的范圍是0到1(0%-100%)综液;50%款慨、70%、80%谬莹、100%的地方需要繪制分隔圓弧線檩奠;而且顏色并不相同;
- 70%附帽、80%的圓弧為dashed樣式埠戳, 50%、100%處的圓弧樣式為solid樣式蕉扮;
- 指標(biāo)的文本顏色需要根據(jù)值來變化整胃,當(dāng)值大于80%的時候為綠色,70%-80%之間時為黃色, 70%以下為紅色喳钟;
- 其他的改變都可以參照官方文檔很容易定制出來:
http://echarts.baidu.com/option.html#radar
http://echarts.baidu.com/demo.html#radar-custom
不同顏色和樣式的分割圓弧
Echart的雷達(dá)圖本身有splitLine的設(shè)置屁使,但是splitLine只支持設(shè)置一種type,[solid,dashed,dotted]奔则;不同的分割線倒可以設(shè)置不同的顏色蛮寂;所以這主要是樣式無法設(shè)置多種的問題;
此外易茬,Echart雷達(dá)圖還支持splitArea的設(shè)置酬蹋,因此有一個大膽的想法,用splitArea來繪制分割線,把splitNumber設(shè)置大一點(diǎn)除嘹,指定值周圍的splitArea用指定顏色繪制写半,其他的splitArea用透明顏色繪制:
var SPLITNUMBER =150;
splitlinecolors = [];
var i = 0;
for(;i < 0.69*SPLITNUMBER;i++){
splitlinecolors.push('rgba(255, 137, 47, 0)')
}
splitlinecolors.push('rgba(255, 137, 47, 1)')
for(i+=1;i < 0.79*SPLITNUMBER;i++){
splitlinecolors.push('rgba(255, 137, 47, 0)')
}
splitlinecolors.push('rgba(00, 176, 92, 1)')
for(i+=1;i < SPLITNUMBER;i++){
splitlinecolors.push('rgba(255, 137, 47, 0)')
}
splitareacolors = []
var i = 0;
for(;i < 0.49*SPLITNUMBER;i++){
splitareacolors.push('rgba(255, 137, 47, 0)')
}
splitareacolors.push('rgba(128, 128, 128, 1)')
for(i+=1;i < SPLITNUMBER-1;i++){
splitareacolors.push('rgba(255, 137, 47, 0)')
}
splitareacolors.push('rgba(128, 128, 128, 1)')
指標(biāo)的文本顏色需要根據(jù)值來變化
這個從配置沒找到解決的辦法,radar.name能統(tǒng)一設(shè)置indicator text的文本顏色尉咕,但是不支持不同indicator設(shè)置不同的顏色;沒辦法只能改源碼了璃岳。
從https://github.com/ecomfe/echarts fork出來一個源年缎,clone到本地,找radar相關(guān)的源碼铃慷;Echart的源碼結(jié)構(gòu)比較清晰单芜,所以即時沒有相關(guān)的介紹文檔,看目錄結(jié)構(gòu)熟悉下犁柜,也能找到對應(yīng)的源碼洲鸠;
最終發(fā)現(xiàn)在 src/coord/radar/RadarModel.js 里面根據(jù)‘indicator’配置,生成了indicatorModels數(shù)組馋缅,這個數(shù)組里面的indicatorOpt.nameTextStyle應(yīng)該就決定了最終indicator的文本樣式扒腕;
所以最快速解決的辦法是‘indicator’配置數(shù)組里面加一項'color'屬性,然后在此處根據(jù)indicator的每一項是否配置color屬性來改變nameTextStyle屬性萤悴;
var iNameTextStyle = nameTextStyle
if(indicatorOpt.color != null){
iNameTextStyle = zrUtil.clone(nameTextStyle)
iNameTextStyle.color = indicatorOpt.color
}
如果indicator需要定義不同的顏色瘾腰,需要修改配置為:
radar: [
{
indicator: [
{text:'indicator1',color:'rgba(255, 2, 35, 1)',max:100},
{text:'indicator2',color:'rgba(00, 176, 92, 1)',max:100},
],
}
]