echarts pieChart legend 图例文字颜色与图例一致

先看成图效果
在这里插入图片描述

首先是封装一个公用的函数

const renderPieEcharts = (
  ele: HTMLDivElement,
  data: Record<string, any>[],
  color: string[],
  titleText: string,
) => {
  const legendData = data.map((item, i) => ({
    name: item.name,
    textStyle: {
      color: color[i],
    },
  }))

  const myChart = echarts.init(ele)
  const option:ECOption = {
    title: {
      text: titleText,
      x: 'center',
      textStyle: {
        color: '#fff',
        fontSize: 16,
      },
    },
    color,
    tooltip: {
      show: false,
      trigger: 'item',
    },
    legend: {
      data: legendData,
      itemWidth: 12,
      itemHeight: 8,
      textStyle: {
        color: 'auto',
        rich: {
          name: {
            fontSize: 12,
            fontWeight: 400,
            width: 50,
            padding: [0, 0, 0, 5],
            color: '#fff', // 图例文字颜色
            fontFamily: 'Source Han Sans CN-Regular',
          },
          value: {
            fontSize: 14,
            fontWeight: 500,
            align: 'right',
            fontFamily: 'Source Han Sans CN-Medium',
          },
        },
      },
      right: 'center',
      orient: 'vertical',
      bottom: '10',
      itemGap: 10,
      formatter: (name: string) => {
        const item = data.find((item) => item.name === name)
        return `{name|${name}}{value| ${item?.value}}`
      },
    },
    series: [
      {
        name: titleText,
        type: 'pie',
        center: ['50%', '40%'],
        radius: ['60%', '90%'],
        avoidLabelOverlap: false,
        label: {
          show: false,
          position: 'center',
        },
        emphasis: {
          label: {
            show: false,
            fontSize: 40,
            fontWeight: 'bold',
          },
        },
        labelLine: {
          show: false,
        },
        data,
      },
    ],
  }
  myChart.setOption(option)
  window.addEventListener('resize', () => {
    myChart.resize()
  })
}

准备好测试数据

const inspectData = [
  { value: 35, name: '年检临期', color: '#1A85FF' },
  { value: 8, name: '超期未检', color: '#FFDA30' },
  { value: 12, name: '需复检', color: '#19D995' },
]

开始调用

onMounted(() => {
  renderPieEcharts(InspectRef.value as HTMLDivElement, inspectData, ['#1A85FF', '#FFDA30', '#19D995'], '年检')
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值