echarts 角度漸變環形圖心得

今天作了一個圖,把本身的遇到的問題和體會記錄一下,以防忘記html

echarts地址算法

https://gallery.echartsjs.com/editor.html?c=xEPtLLmG4Gecharts

參考官網地址: http://echarts.baidu.com/examples/index.htmlspa

思路:3d

首先須要1/4個圓形code

在數據對象裏面設置75和25 分別表示一個佔1份,另外一個佔4份orm

 series: [{ "name": '', "type": 'pie', "radius": ['50%', '70%'], "avoidLabelOverlap": false, "startAngle": 225, "color": [{ type: 'linear', x: 0, y: 0, x2: 0.4, y2: 1, colorStops: [{ offset: 0, color: color_percent0 // 0% 處的顏色
 }, { offset: 1, color: color_percent100 // 100% 處的顏色
 }], globalCoord: false // 缺省爲 false
            }, 'none'], "hoverAnimation": false, "legendHoverLink": false, "label": { "normal": { "show": false, "position": 'center' }, "emphasis": { "show": true, "textStyle": { "fontSize": '30', "fontWeight": 'bold' } } }, "labelLine": { "normal": { "show": false } }, "data": [{ "value": 75, "name": '1' }, { "value": 25, "name": '2' }] }]

還有一部分就是真實數據環形htm

 1 series:[{  2             "name": '',  3             "type": 'pie',  4             "radius": ['50%', '70%'],  5             "avoidLabelOverlap": false,  6             "startAngle": 315,  7             "color": ['rgba(34,34,34,.9)', "#ff7a00", "transparent"],  8             "hoverAnimation": false,  9             "legendHoverLink": false, 10             "clockwise": false, 11             "itemStyle": { 12                 "normal": { 13                     "borderColor": "transparent", 14                     "borderWidth": "20"
15  }, 16                 "emphasis": { 17                     "borderColor": "transparent", 18                     "borderWidth": "20"
19  } 20  }, 21             "z": 10, 22             "label": { 23                 "normal": { 24                     "show": false, 25                     "position": 'center'
26  }, 27 
28  }, 29             "labelLine": { 30                 "normal": { 31                     "show": false
32  } 33  }, 34             "data": [{ 35                 "value": (100 - 50) * 270/ 360, 36 
37                 "label": { 38  normal: { 39                         formatter: percent + '%', 40                         position: 'center', 41                         show: true, 42  textStyle: { 43                             fontSize: '90', 44                             fontWeight: 'normal', 45                             color: '#fff'
46  } 47  } 48  }, 49                 "name": ''
50  }, { 51                 "value": 1, 52                 "name": ''
53  }, { 54                 "value": 100 - (100 - 50) * 270/ 360, 55                 "name": ''
56  }] 57         }]

這個裏面須要注意的是一個算法對象

(100 - 50) * 270/ 360
100 - (100 - 50) * 270/ 360

咱們先算出這個公式裏面的270 怎麼得的blog

75/100*360 =270 

也就是在270的這個圓上進行百分比的配置

若是後臺傳來的是50%

(100 - 50) * 270/ 360 這樣算出來的就是在3/4圓中的一半位置
還有一個地方須要注意,圖中有一個顏色很亮的部分,我把這個部分設置佔比爲1
分爲3個部分來顯示

 分解開是這樣的

其餘部分用漸變來解決

 說到漸變,

 1 "color": [{  2                 type: 'linear',  3                 x: 0,  4                 y: 0,  5                 x2: 0.4,  6                 y2: 1,  7  colorStops: [{  8                     offset: 0,  9                     color: 'rgba(12,255,0,1)' // 0% 處的顏色
10  }, { 11                     offset: 1, 12                     color: 'rgba(12,255,0,.3)'// 100% 處的顏色
13  }], 14                 globalCoord: false // 缺省爲 false
15             }, 'none'],

 

 

 我遇到一個問題,就是橫軸的座標,若是不進行設置,座標上的寬度是頁面大小和數據的值變化的,若是頁面放大,橫軸的座標就會跟着自適應變大

若是頁面放大就會更大,效果就很差了

因此在xAxis對象裏設置,根據本身的須要設置值

min: function(value) {
return value.min - 7;
},
max: function(value) {
return value.max + 7;
},

startAngle:230

起始角度,支持範圍[0, 360]。

相關文章
相關標籤/搜索