Echarts 餅圖,legend樣式美化

最後樣式圖:

實現代碼: 

var myChart = echarts.init(document.getElementById('container'));
              let option = {
                  /*{b}: {c} ({d}%*/
                  legend: {
                      orient: 'vertical',
                      icon: "circle",
                      itemWidth: 5,
                      right: 20,
                      top: 70,
                      formatter: (name) => {
                          let data = this.data;
                          let total = 0;
                          let target;
                          for (let i = 0; i < data.length; i++) {
                              total += data[i].value;
                              if (data[i].name === name) {
                                  target = data[i].value;
                              }
                          }
                          let arr = [
                              '{a|' + name + '}{b|' + target + '}{c|' + ((target / total) * 100).toFixed(2) + '%}'
                          ];

                          return arr.join('\n')
                      },
                      textStyle: {
                          rich: {
                              a: {
                                  verticalAlign: 'right',
                                  fontSize: 12,
                                  align: 'left',
                                  // padding:[0,28,0,0],
                                  width: 70
                              },
                              b: {
                                  fontSize: 12,
                                  align: 'left',
                                  // padding:[0,28,0,0],
                                  width: 50

                              },
                              c: {
                                  fontSize: 12,
                                  align: 'left',
                                  width: 50
                              }
                          }
                      },
                  },
                  // color:this.getRandomColor,
                  series: [
                      {
                          center: ['25%', '50%'],
                          name: '訪問來源',
                          type: 'pie',
                          radius: ['50%', '60%'],
                          avoidLabelOverlap: true,
                          hoverOffset: 0,
                          hoverAnimation: false,
                          silent: true,
                          /*label: {
                              normal: {
                                  show: false,
                                  position: 'center'
                              }*/
                          label: {
                              show: true,
                              position: 'center',
                              textStyle: {
                                  fontSize: '20',
                                  fontFamily: '黑體',
                                  fontWeight: 'bold',
                                  rich: {
                                      d: {
                                          fontSize: 35,
                                          color: '#696969',
                                      },
                                      e: {
                                          fontSize: 17,
                                          color: '#696969',
                                          lineHeight: 25,
                                      }
                                  }
                              },
                              formatter: (params) => {
                                  let data = this.data;
                                  let number = 0;
                                  data.forEach((data) => {
                                      number += data.value;
                                  });
                                  return [
                                      '{d|' + number + '}\n' +
                                      '{e|影像數量}'
                                  ]
                              }

                              // emphasis: {
                              //     show: true,
                              //     textStyle: {
                              //         fontSize: '30',
                              //         fontWeight: 'bold'
                              //     }
                              // }
                          },
                          labelLine: {
                              normal: {
                                  show: false
                              }
                          },
                          data: this.data
                      }
                  ]
              };
              if (option && typeof option === "object") {
                  myChart.setOption(option, true);
              }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章