echarts 饼图样式及内圈

在这里插入图片描述

组件引用:import pieChartIndustry from “./components/pieChartIndustry”;
  <pieChartIndustry :opt="industryRate" />
  
  data() {
	  return {
		  industryRate: {
		        legend: ['水电', '水利', '新能源', '建筑', '市政', '交通', '水务', '其他'],
		        seriesData: [{
		          name: '水电',
		          value: 37.5,
		        }, {
		          name: '水利',
		          value: 37.5,
		        }, {
		          name: '新能源',
		          value: 37.5,
		        }, {
		          name: '建筑',
		          value: 37.5,
		        }, {
		          name: '市政',
		          value: 37.5,
		        }, {
		          name: '交通',
		          value: 37.5,
		        }, {
		          name: '水务',
		          value: 37.5,
		        }, {
		          name: '其他',
		          value: 37.5,
		        }]
		      },
	      }
  }
子组件pieChartIndustry.vue:

ChartPanel组件已经封装过了,前面的文章有封装

<template>
  <div style="width: 100%;height: 100%;">
    <ChartPanel ref="chart" :option="options" :style="opt.yAxisName ? 'height:calc(100% - 16px)' : ''"></ChartPanel>
  </div>
</template>

<script>
import * as echarts from 'echarts'
import ChartPanel from '@/components/ChartPanel';
export default {
  components: {
    ChartPanel
  },
  props: {
    opt: {
      type: Object,
      default() {
        return {}
      }
    }
  },
  data() {
    return {
      options: null
    }
  },
  watch: {
    opt: {
      deep: true,
      immediate: true,
      handler(val) {
        // if (val && val.seriesData) {
          this.getOpt(val)
        // }
      }
    }
  },
  methods: {
    getOpt(val) {
      let {
        seriesData,
        legend
      } = val
      // let color = ["#B0C8FF", "#3562D4", "#62B8F7", "#2BC4CD", "#FFCFAD", "#E68B29", "#FCC0C0", "#D43538"]
      let color = ["#B0C8FF", "#3666E0", "#62B8F7", "#26D7E0", "#FFCFAD", "#F0922E", "#FCC0C0", "#E03D3F"]
      this.options = {
        tooltip: {
          borderWidth: 0,
          show: true,
          formatter: params => {
            if (params.name != '内边线') {
              return `
                      <div>${params.name}
                        <span style="color:${params.color};font-weight:700">${params.percent}%</span>  
                      </div>
              `
            }
          }
        },
        series: [{
          type: "pie",
          center: ["50%", "50%"],
          radius: ["40%", "53%"],
          color: color,
          hoverAnimation: false,
          // startAngle: 135,
          label: {
            normal: {
              formatter: data => {
                return data.name + ' {per' + data.dataIndex + '|' + data.percent + '%} '
              },
              backgroundColor: "rgba(255, 147, 38, 0)",
              borderColor: "transparent",
              borderRadius: 4,
              rich: {
                b: {
                  color: "#595D64",
                  fontSize: 14,
                  lineHeight: 33
                },
                per0: {
                  color: color[0],
                  fontSize: 14,
                  borderRadius: 2
                },
                per1: {
                  color: color[1],
                  fontSize: 14,
                  borderRadius: 2
                },
                per2: {
                  color: color[2],
                  fontSize: 14,
                  borderRadius: 2
                },
                per3: {
                  color: color[3],
                  fontSize: 14,
                  borderRadius: 2
                },
                per4: {
                  color: color[4],
                  fontSize: 14,
                  borderRadius: 2
                },
                per5: {
                  color: color[5],
                  fontSize: 14,
                  borderRadius: 2
                },
                per6: {
                  color: color[6],
                  fontSize: 14,
                  borderRadius: 2
                },
                per7: {
                  color: color[7],
                  fontSize: 14,
                  borderRadius: 2
                },
              },
              textStyle: {
                color: "#595D64",
                fontSize: 14
              }
            }
          },
          data: seriesData,
        }, {
          type: "pie",
          center: ["50%", "50%"],
          radius: ["35%", "36%"],
          label: {
            show: false
          },
          hoverAnimation: false,
          data: [{
            name: '内边线',
            value: 1,
            itemStyle: {
              normal: {
                color: {
                  x: 0,
                  y: 0,
                  x2: 1,
                  y2: 0,
                  type: "linear",
                  global: false,
                  colorStops: [{
                    offset: 0,
                    color: color[0]
                  }, {
                    offset: 0.15,
                    color: color[1]
                  }, {
                    offset: 0.3,
                    color: color[2]
                  }, {
                    offset: 0.45,
                    color: color[3]
                  }, {
                    offset: 0.6,
                    color: color[4]
                  }, {
                    offset: 0.75,
                    color: color[5]
                  }, {
                    offset: 0.9,
                    color: color[6]
                  }, {
                    offset: 1,
                    color: color[7]
                  }]
                }
              }
            },
          }]
        }]
      }
      this.$nextTick(() => {
        this.$refs.chart.initChart(echarts, chart => {
          // chart.setOption(this.options)
          this.options && chart.setOption(this.options, true);
        });
      })
    }
  }
}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到了echarts样式的修改。可以通过对legend对象进行修改来改变例的样式。在legend中可以设置orient属性来确定例的方向,可以设置x属性来确定例的位置。可以使用data属性来设置例的数据项,可以使用icon属性来设置例的样式。可以使用formatter属性来自定义例的文本格式,通过修改formatter函数中的代码,可以实现对例文本的自定义样式。可以使用textStyle属性来设置例文本的样式,可以使用rich属性来进一步设置富文本样式。根据需求可以根据以上属性来调整echarts样式。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Axure8.0基于Echarts的动态表元件库,实用版本](https://download.csdn.net/download/weixin_54626591/85812795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Echarts 例修改,legend样式修改](https://blog.csdn.net/qq_41954585/article/details/122585663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值