最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽

 更新時間:2022年12月08日 11:34:38   作者:某只雜魚  
項目中有遇到需要使用餅圖展示每種狀態(tài)所占比例,去echarts官網(wǎng)學(xué)習(xí)了一番,下面這篇文章主要給大家介紹了關(guān)于echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽的相關(guān)資料,需要的朋友可以參考下

需求描述

需要實現(xiàn)一個“五彩斑斕”的餅圖:每塊餅上的標(biāo)簽顏色與這塊餅的顏色一致。

實現(xiàn)思路

要改變餅圖標(biāo)簽的顏色,需要參考echarts餅圖label配置項,以及這個很棒的官方示例:餅圖引導(dǎo)線調(diào)整。從這個示例中可以了解到自定義標(biāo)簽涉及的兩個配置項:formatter(用于自定義標(biāo)簽顯示內(nèi)容)、rich(用于自定義標(biāo)簽文字顯示樣式)。

自定義標(biāo)簽用到的配置項

label: {
  formatter: '{name|}\n{time|{c} 小時}',
  rich: {
    time: {
      fontSize: 10,
      color: '#999'
    }
  }
}

接下來稍微講解下上面這段自定義標(biāo)簽的配置項:

formatter

比較簡單的標(biāo)簽內(nèi)容可以通過使用echarts標(biāo)簽字符串模板實現(xiàn)(個人感覺理解起來類似于JS模板字符串),“{name|}\n{time|{c} 小時}”中包含兩個內(nèi)容(“”、“{c} 小時”),它們之間使用“\n”分隔。至于“{name|}”“{time|}”這種寫法,大概相當(dāng)于“<div class=‘name’></div>”、“<div class=‘time’>{c} 小時</div>”,用于為內(nèi)容指定樣式類名。

此外,還可以通過回調(diào)函數(shù)的方式手動返回formatter字符串,且回調(diào)函數(shù)中無法使用echarts標(biāo)簽字符串模板(也沒有必要使用,回調(diào)函數(shù)傳入的參數(shù)包含的數(shù)據(jù)更全),如果用回調(diào)函數(shù)生成上面的formatter字符串,可以這樣寫:

label: {
  formatter: params => {
    // console.log(params)
    return `{name|${params.name}}\n{time|${params.value} 小時}`
  },
  rich: {
    time: {
      fontSize: 10,
      color: '#999'
    }
  }
}

rich

用于為每個樣式類名配置具體樣式內(nèi)容,可以參考echarts支持的樣式配置

根據(jù)筆者的測試,有兩點需要注意:①自定義標(biāo)簽樣式必須通過在formatter中為內(nèi)容設(shè)置樣式類名并在rich中配置對應(yīng)樣式實現(xiàn);②每段內(nèi)容只能指定一個樣式類名

參考代碼

根據(jù)以上分析,要實現(xiàn)標(biāo)簽顏色與餅塊一致,可以預(yù)先定義一個配色數(shù)組,遍歷數(shù)組為每種顏色創(chuàng)建rich樣式類名,再使用回調(diào)函數(shù)formatter為標(biāo)簽內(nèi)容指定下標(biāo)一致的樣式類名即可,具體參考代碼如下:

let pieColors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de']
let richColor = {}
pieColors.forEach((item, idx) => {
  richColor[`color${idx}`] = { 
    fontSize: 28,
    color: item
  }
})

option = {
  color: pieColors,
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: ['36%', '56%'],
      avoidLabelOverlap: false,
      label: {
        formatter: params => {
          // console.log(params)
          return `{color${params.dataIndex}|${params.name}(${params.value})}`
        },
        rich: richColor
      },
      labelLine: {
        lineStyle: {
          width: 3
        }
      },
      data: [
        { value: 1048, name: 'Search Engine' },
        { value: 735, name: 'Direct' },
        { value: 580, name: 'Email' },
        { value: 484, name: 'Union Ads' },
        { value: 300, name: 'Video Ads' }
      ]
    }
  ]
};

在線運行

可以將參考代碼拷貝到這個在線示例進行調(diào)試:echarts環(huán)形圖示例

標(biāo)簽plus

現(xiàn)在增加這樣一個小需求:在剛才的圓環(huán)餅圖中心,增加展示餅圖所有數(shù)據(jù)的和,效果類似:

標(biāo)簽plus效果圖

分析

首先想到的方案,也是筆者曾經(jīng)使用的方案:自己多寫一個div來展示圓環(huán)中心的數(shù)據(jù),但現(xiàn)在筆者有了更好的思路,便不細講了。

新的思路

其實和之前的思路差不多,只是不再自己寫一個div自己調(diào)樣式,而是利用echarts餅圖支持在圓心處展示標(biāo)簽的特性,在series中增加一個餅圖用于展示總數(shù),參考代碼如下:

let pieColors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de']
let richColor = {}
pieColors.forEach((item, idx) => {
  richColor[`color${idx}`] = { 
    fontSize: 28,
    color: item
  }
})

let chartData = [
  { value: 1048, name: 'Search Engine' },
  { value: 735, name: 'Direct' },
  { value: 580, name: 'Email' },
  { value: 484, name: 'Union Ads' },
  { value: 300, name: 'Video Ads' }
]

option = {
  color: pieColors,
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: ['36%', '56%'],
      avoidLabelOverlap: false,
      label: {
        formatter: params => {
          // console.log(params)
          return `{color${params.dataIndex}|${params.name}(${params.value})}`
        },
        rich: richColor
      },
      labelLine: {
        lineStyle: {
          width: 3
        }
      },
      data: chartData
    },
    {
      name: '數(shù)據(jù)總數(shù)',
      type: 'pie',
      radius: ['0%', '0%'],
      itemStyle: { // 防止鼠標(biāo)懸浮到標(biāo)簽時出現(xiàn)放大的點
        color: 'transparent'
      },
      label: {
        position: 'inside',
        formatter: `{data|{c}}\n{serie|{a}}`,
        rich: {
          data: {
            fontWeight: 'bold',
            fontSize: 64,
            color: `#202020`,
            lineHeight: 68,
            textBorderColor: `transparent`,
            textBorderWidth: 0
          },
          serie: {
            fontSize: 24,
            color: `#acbac6`,
            lineHeight: 28,
            textBorderColor: `transparent`,
            textBorderWidth: 0
          }
        }
      },
      labelLine: {
        show: false
      },
      data: [ // 計算表格數(shù)據(jù)value總和
        chartData.reduce((prev, cur) => prev + cur.value, 0)
      ]
    }
  ]
};

小伙伴們可自行拷貝到echarts環(huán)形圖示例在線調(diào)試~☆▽☆~

(最后再多嘴一句,echarts配置項的層級非常重要?。?!如果出現(xiàn)了配置項“失效”的情況,可以先·仔細·對照官方文檔,排查下配置項的層級問題~)

附:解決formatter無法處理數(shù)據(jù)的問題

解決圖標(biāo)自適應(yīng)大小的問題

大家在使用echarts餅圖時,經(jīng)常遇到formatter無法處理精確數(shù)據(jù)的情況,怎么辦呢?建議在外面自定義或處理好數(shù)據(jù)pieData,然后在formatter里面使用for循環(huán)遍歷

//首先建議在外面自定義或處理好數(shù)據(jù)pieData,然后在formatter里面使用for循環(huán)遍歷
  var chartPie = echarts.init(document.getElementById("charPie"));
  var option = {
    backgroundColor: "#ffffff",//背景色
    legend: {//圖例配置
      selectedMode: false,//取消圖例上的點擊事件
      show: true,//是否顯示圖例
      orient: 'vertical',
      x: '55%',
      y: '0px',
      right: '0px',
      top: 'center',
      data: pieData,//餅圖數(shù)據(jù)
      icon: "circle",
      itemHeight: 9,//圖例圓點的高度
      formatter: function (name) {
        console.log(name, "打印一下name")
        // let arr = ["{a|" + n + "}", "{b|" + target + "%}"]
        //return arr.join("")
      },
      textStyle: {
        rich: {
          a: {
            fontSize: 12,
            color: "#333",
            padding: 1//圖例上下的間距
          }
        }
      }
    },
    series: [{
      name: '圓環(huán)圖系列名稱',         // 系列名稱
      type: 'pie',                    // 系列類型 
      center: ['20%', '50%'],           // 餅圖的中心(圓心)坐標(biāo),數(shù)組的第一項是橫坐標(biāo),第二項是縱坐標(biāo)。[ default: ['50%', '50%'] ]
      radius: [34, 58],         // 餅圖的半徑,數(shù)組的第一項是內(nèi)半徑,第二項是外半徑。[ default: [0, '75%'] ]
      hoverAnimation: false,           // 是否開啟 hover 在扇區(qū)上的放大動畫效果。[ default: true ]
      label: {                        // 餅圖圖形上的文本標(biāo)簽,可用于說明圖形的一些數(shù)據(jù)信息,比如值,名稱等.
        normal: {
          show: false             // 是否顯示標(biāo)簽[ default: false ]
        }
      },
      color: ['#16B6F3', '#DB3764', '#B482CE', '#F9C03D', "#44A22E", "#F39716", "#E54EB5", "#82E2D2", "#3DD5F9", "#A39D0E"], // 圓環(huán)圖各環(huán)節(jié)的顏色(順時針)
      data: pieData                      // 系列中的數(shù)據(jù)內(nèi)容數(shù)組。
    }]
  };
   // 使用剛指定的配置項和數(shù)據(jù)顯示圖表
  chartPie.setOption(option)
  window.addEventListener("resize", function () {
    chartPie.resize()//圖表自適應(yīng)大小
  })

效果圖如下:

參考網(wǎng)址

[1] echarts餅圖label配置項

[2] echarts標(biāo)簽字符串模板

[3] JS模板字符串

[4] echarts支持的樣式配置

[5] echarts環(huán)形圖示例

總結(jié)

到此這篇關(guān)于echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽的文章就介紹到這了,更多相關(guān)echarts餅圖標(biāo)簽formatter使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript獲取某一天所在的星期

    JavaScript獲取某一天所在的星期

    我們會遇到的需求是,獲取今天或者某一天所在星期的開始和結(jié)束日期。今天小編通過實例代碼給大家分享JavaScript獲取某一天所在的星期,感興趣的朋友跟隨小編一起看看吧
    2019-09-09
  • 詳解JavaScript對象類型

    詳解JavaScript對象類型

    這篇文章主要為大家詳細介紹了JavaScript對象類型,分析了JavaScript六種數(shù)據(jù)類型,感興趣的小伙伴們可以參考一下
    2016-06-06
  • JS中使用正則表達式g模式和非g模式的區(qū)別

    JS中使用正則表達式g模式和非g模式的區(qū)別

    這篇文章給大家詳細介紹了JS中使用正則表達式g模式和非g模式的區(qū)別,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-04-04
  • JS實現(xiàn)1000以內(nèi)被3或5整除的數(shù)字之和

    JS實現(xiàn)1000以內(nèi)被3或5整除的數(shù)字之和

    今天在技術(shù)群里看到一道這樣的提:求1000以內(nèi)被3或5整除的數(shù)字之和。小編把我的解決辦法分享到腳本之家平臺,供大家參考
    2016-02-02
  • JS簡單實現(xiàn)表格排序功能示例

    JS簡單實現(xiàn)表格排序功能示例

    這篇文章主要介紹了JS簡單實現(xiàn)表格排序功能,涉及javascript針對頁面元素的遍歷、判斷與排序相關(guān)操作技巧,需要的朋友可以參考下
    2016-12-12
  • javascript中內(nèi)置對象Math的介紹及用法案例

    javascript中內(nèi)置對象Math的介紹及用法案例

    Math對象是一個內(nèi)置對象,具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法,不是一個函數(shù)對象,下面這篇文章主要給大家介紹了關(guān)于javascript中內(nèi)置對象Math的介紹及用法案例的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 圖片img的src不變讓瀏覽器重新加載實現(xiàn)方法

    圖片img的src不變讓瀏覽器重新加載實現(xiàn)方法

    圖片img的src不變,想讓瀏覽器重新加載怎么辦,在圖片地址src不變的情況下讓瀏覽器重新加載圖片,實際上在src不變時,瀏覽器直接就去讀取緩存
    2013-03-03
  • 簡單實現(xiàn)js菜單欄切換效果

    簡單實現(xiàn)js菜單欄切換效果

    這篇文章主要教大家如何簡單實現(xiàn)js菜單欄切換效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • javascript實現(xiàn)列表滾動的方法

    javascript實現(xiàn)列表滾動的方法

    這篇文章主要介紹了javascript實現(xiàn)列表滾動的方法,較為詳細的分析了javascript實現(xiàn)列表滾動的頁面布局及javascript滾動效果的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • JS實現(xiàn)超精簡響應(yīng)鼠標(biāo)顯示二級菜單代碼

    JS實現(xiàn)超精簡響應(yīng)鼠標(biāo)顯示二級菜單代碼

    這篇文章主要介紹了JS實現(xiàn)超精簡響應(yīng)鼠標(biāo)顯示二級菜單代碼,可實現(xiàn)針對鼠標(biāo)事件的響應(yīng)動態(tài)修改頁面元素屬性的功能,非常簡單實用,需要的朋友可以參考下
    2015-09-09

最新評論

大安市| 肇庆市| 茶陵县| 崇信县| 西青区| 泉州市| 扎赉特旗| 平塘县| 禄劝| 海南省| 岢岚县| 苍山县| 凌海市| 炎陵县| 顺昌县| 通山县| 佳木斯市| 郓城县| 健康| 陇川县| 卢氏县| 寻乌县| 平阴县| 云南省| 遂平县| 玉龙| 浙江省| 仁怀市| 卓资县| 波密县| 师宗县| 汉川市| 北票市| 彭山县| 长丰县| 杭锦旗| 乃东县| 阳城县| 昔阳县| 蒙城县| 诸城市|