使用echarts餅狀圖label既在內(nèi)部顯示數(shù)值(百分比),又顯示外部指示線
需求
項(xiàng)目開發(fā)中,產(chǎn)品經(jīng)理繪制的原型圖中,需要前端實(shí)現(xiàn)一個(gè)餅狀圖,且既在餅圖內(nèi)部中 顯示 百分比,又顯示 外部指示線及數(shù)值
效果如下圖所示:
查了下Echarts官網(wǎng)文檔
需要配置 series 下的 label 配置項(xiàng)
如下所示:
series: [ label: { normal: { position: 'inside' // 在內(nèi)部顯示,outseide 是在外部顯示 show: true, formatter: '{c} // formatter 是標(biāo)簽內(nèi)容的格式器,用于轉(zhuǎn)換格式。支持 字符串和回調(diào)函數(shù)兩種形式。 } } ]
其中,formatter 是標(biāo)簽內(nèi)容的格式器,用于轉(zhuǎn)換格式。
支持 字符串和回調(diào)函數(shù)兩種形式。
{c} 代辦字符串模板變量,表示數(shù)據(jù)值,常用的模板變量有:
- { a }:系列名
- { b }:數(shù)據(jù)名
- { c }:數(shù)據(jù)值
- { d }:百分比
問題來了
echarts 好像沒法直接配置成 內(nèi)部+外部 同時(shí)展示的情況。
因?yàn)樵?strong>單個(gè)的 series 中(即其中的一個(gè)對(duì)象中),只能設(shè)置一個(gè)label。
不過也好解決
通過查看 echarts 官網(wǎng) series 配置項(xiàng),可以看出,series 是一個(gè)數(shù)組(如上圖所示),既然單個(gè)中只能出現(xiàn)一個(gè),那么我配置成 2個(gè)(多個(gè))相同的對(duì)象,讓他們重合,就會(huì)出現(xiàn)兩個(gè) label 標(biāo)簽,一個(gè)在內(nèi)部展示,一個(gè)在外部展示,就可以完美解決這種情況。
代碼實(shí)例如下所示:
series: [ { type: 'pie', radius: '90%', data: [ { value: data?.winBidNumber || 0, name: '中標(biāo)數(shù)量' }, { value: data?.loseBidNumber || 0, name: '未中標(biāo)數(shù)量' }, { value: data?.abandonBidNumber || 0, name: '棄標(biāo)數(shù)量' } ], labelLine: { show: true, position: 'outside', length: 10, length2: 50 }, emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } }, label: { normal: { position: 'outside', show: true, formatter: (d: any) => { console.log(222, d); return d.name + '(' + d.value + '次' +')' } } } }, { type: 'pie', radius: '90%', data: [ { value: data?.winBidNumber || 0, name: '中標(biāo)數(shù)量' }, { value: data?.loseBidNumber || 0, name: '未中標(biāo)數(shù)量' }, { value: data?.abandonBidNumber || 0, name: '棄標(biāo)數(shù)量' } ], emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } }, label: { normal: { position: 'inside', show: true, formatter: (d: any) => { return d.percent + '%' } } } } ]
其中, labelLine 屬性 是 用來配置 外部指示線(第一段、第二段)的長(zhǎng)度及樣式的。
formatter 為 回調(diào)函數(shù)的寫法如上面的代碼實(shí)例,該回調(diào)函數(shù)接收一個(gè)參數(shù),該參數(shù)的值包含了 模板字符串變量所擁有的值
如下圖打印的所示:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
原生js實(shí)現(xiàn)拖拽移動(dòng)與縮放效果
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)拖拽移動(dòng)與縮放效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08不用AJAX和IFRAME,說說真正意義上的ASP+JS無刷新技術(shù)
注明:以下方法都經(jīng)過實(shí)例和開發(fā)的長(zhǎng)期驗(yàn)證,其實(shí)這些技術(shù)早就有,今天只不過自己歸納一下2008-09-09js form表單input框限制20個(gè)字符,10個(gè)漢字代碼實(shí)例
這篇文章主要介紹了js form表單input框限制20個(gè)字符,10個(gè)漢字,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04原生JavaScript實(shí)現(xiàn)的簡(jiǎn)單省市縣三級(jí)聯(lián)動(dòng)功能示例
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)的簡(jiǎn)單省市縣三級(jí)聯(lián)動(dòng)功能,結(jié)合完整實(shí)例形式分析了javascript聯(lián)動(dòng)菜單的實(shí)現(xiàn)方法,涉及javascript事件響應(yīng)及頁面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05JavaScript實(shí)現(xiàn)給對(duì)象添加一個(gè)只讀屬性
這篇文章主要為大家介紹了JavaScript如何給對(duì)象加一個(gè)只讀屬性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06處理Axios返回Promise對(duì)象的幾種常見方式
Axios返回的是Promise對(duì)象,這意味著可以使用Promise的.then()、.catch()和.finally()方法來處理異步操作的結(jié)果,本文詳細(xì)介紹了處理Axios返回Promise對(duì)象的幾種常見方式,需要的朋友可以參考下2024-09-09