echarts 實(shí)現(xiàn)環(huán)形圖漸變

echarts 原生是不支持弧形漸變的,本文只是取巧,利用線性漸變 linear 實(shí)現(xiàn)視覺(jué)上的弧形漸變。適用于以弧中點(diǎn)劃分,兩側(cè)顏色是對(duì)稱的情況。而對(duì)于嚴(yán)格意義上的弧形漸變(從起點(diǎn)到終點(diǎn)漸變)是不適用的。

環(huán)形圖是 echarts 中 pie 圖的一個(gè)變種,echarts 官方對(duì)于 pie 圖的顏色漸變只支持兩種:

  1. linear 線性漸變
    與 css 3 的 Linear Gradients 相似,即向下/向上/向左/向右/角度方向漸變,類似與射線
  2. radial 鏡像漸變
    與 css 3 的 Radial Gradients 相似,即從圓心向外一圈圈漸變出去,類似與太陽(yáng)輻射

漸變顏色屬性

本文實(shí)現(xiàn)的弧形漸變是利用線性漸變的實(shí)現(xiàn)的,動(dòng)手前需要了解到 itemStyle.color 屬性的配置與其子屬性表示的意義,可以參考 echarts 配置文檔 series-pie::itemStyle::color。主要了解這幾個(gè)屬性:

  1. type:漸變類型,支持 linear/radial
  2. x, y, x2, y2:向量坐標(biāo),即漸變開(kāi)始的起點(diǎn)坐標(biāo) (x, y),與結(jié)束坐標(biāo) (x2, y2),會(huì)影響到 colorStops 中對(duì)圖表的著色,需要注意的是值的范圍在 0 ~ 1 之間
  3. colorStops:色彩過(guò)程,值為元素是{ offset: PERCENTAGE, color: COLOR }的數(shù)組,每個(gè)元素表示在什么位置是什么顏色(如,在 30% 的位置是紅色,{ offset: 0.3, color: 'red' }

實(shí)現(xiàn)流程

實(shí)現(xiàn)過(guò)程主要分為以下幾個(gè)步驟:

  1. 確定環(huán)形圖旋轉(zhuǎn)展開(kāi)的起始位置 Ps
  2. 確定漸變顏色,0% 處的顏色即起點(diǎn)/終點(diǎn)的顏色,100% 處的顏色即弧線中點(diǎn)的顏色
  3. 將環(huán)形圖看成是一個(gè)圓 O,圓心為 O0,圓心坐標(biāo)為 (x0, y0),半徑 R
    根據(jù)上邊向量坐標(biāo)值范圍的規(guī)定(必須在 0~1 之間),可以確定圓心坐標(biāo) (x0, y0) = (0.5, 0.5),半徑 R = 0.5
  4. 將圓 O 置入 echarts 的 linear 漸變坐標(biāo)系中
  5. 計(jì)算圓上點(diǎn) Ps 的坐標(biāo) (xs, ys)
  6. 根據(jù)你的數(shù)據(jù) val(如占比 62%,val === 62)確定弧度 α
    val / 100 = α / 2π,即 α = (val * π) / 50
  7. 確定漸變向量的起點(diǎn) Ms 與其坐標(biāo) (x, y)
    以 Ps 為起點(diǎn)沿環(huán)形圖展開(kāi)方向(如順時(shí)針)旋轉(zhuǎn)弧度 α 后得到的圓上點(diǎn) Pe,Ms 為線段 PsPe 的中垂線 L 與 PsPe 的交點(diǎn)。此處中垂線一定是穿過(guò)圓心O0
  8. 確定漸變向量的終點(diǎn) Me 及其坐標(biāo) (x2, y2)
    Me 為中垂線 L 與弧線 PsPe 的交點(diǎn)

以上過(guò)程建議在實(shí)現(xiàn)時(shí)通過(guò)紙筆畫(huà)出坐標(biāo)系進(jìn)行坐標(biāo)求解,過(guò)程需要考慮占比大于等于 50 與小于 50 的 兩種情況,前者即弧度 α < π,后者即 α > π。具體求解坐標(biāo)的過(guò)程為高中數(shù)學(xué)內(nèi)容。

以下是以 Ps 為環(huán)形圖起點(diǎn), Pe 為環(huán)形圖終點(diǎn)在 echarts 的 linear gradients 坐標(biāo)系中構(gòu)造出的環(huán)形圖結(jié)構(gòu)(也可以參考 GeoGebra 上本人繪制的坐標(biāo)系統(tǒng)),只需要計(jì)算出向量 MsMe 的起/終點(diǎn)坐標(biāo)即可。相關(guān)代碼參考 linear 實(shí)現(xiàn)偽弧形漸變

坐標(biāo)系統(tǒng)

軟件推薦

強(qiáng)烈推薦 GeoGebra 數(shù)學(xué)繪圖軟件,可在線作圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天出去吃飯,飯后搞活動(dòng)送了個(gè)小禮品。禮品本身不值一提,重要的的是漸變。本篇就介紹并實(shí)際做一下這個(gè)漸變效果。 線性...
    張歆琳閱讀 3,387評(píng)論 6 14
  • 前言 重拾css后的文章,在觀看了慕課網(wǎng)上的視頻《重拾CSS的樂(lè)趣》中,看到了一些有意思的css效果。想起當(dāng)初自己...
    destiny0904閱讀 2,013評(píng)論 0 0
  • 1、屬性選擇器:id選擇器 # 通過(guò)id 來(lái)選擇類名選擇器 . 通過(guò)類名來(lái)選擇屬性選擇器 ...
    Yuann閱讀 1,771評(píng)論 0 7
  • 本文轉(zhuǎn)載自:http://southpeak.github.io/2014/12/10/quartz2d-8/ Q...
    idiot_lin閱讀 987評(píng)論 0 3
  • 喜歡跑酷公社 和嚴(yán)格的秦教練
    梁絳閱讀 376評(píng)論 6 2

友情鏈接更多精彩內(nèi)容