echarts 饼状图指示线末尾添加圆点

ui在设计稿上给echarts的饼状图的指示线末尾加上了圆点,产品要求要100%还原,在这种情况下,我们就需要去利用echarts提供的api去实现这个效果。
ui设计稿

问题:管访API或者示例上并没有这个效果。

官方效果

解决办法:利用label配置项,格式化配置项之后,利用rich富文本去做处理。

网上也看到别人有能实现这个效果的,方案大概有两种方案:1 利用背景图片, 即利用rich设置background,或者利用 label格式化通过富文本实现, 2 利用同一个数据,两层配置叠加实现(1 第一层显示label文本 第二层显示小圆点)。
从上面时间方案来看,还是第一种比较方便。但是实际使用过程中还是问题比较多,也有很多事以讹传讹。今天这里我就把详细配置方法说下来。

格式化label

const customLabelFormatter = (params) => {
      return `{dot|}\n{a|${params.percent}}{b|%}\n{c|${params.name}}`;
    };

这里重点要说的时基本原理:其实就是利用第一个dot(普通的自定义元素)配合样式来实现圆点。后面这些元素(如果你只有一个显示元素则比较简单,我这里时多个元素)利用样式padding配合负数来实现和小圆点对齐。注意{dot|}后一定要加\n换行,否则在饼图的左右的时候,圆点不会保持在线的末端。
先看第一步:
小圆点
这里还需要配置外层:
配置项
alignTo: “labelLine” 这个配置项,是将label对其到指示线,这个配置项能保证你的小圆点位于线的末端。

 rich: {
   dot: {
     backgroundColor: "auto",  // 适应颜色
     width: 0,
     height: 0,
     borderRadius: 3,  // 保证是圆角
     fontSize: 16,
     padding: [3, -3, 3, -3] // 这里就保证是要给宽高6的正方形
   }
 }

以上配置可以保证小圆点了。

接下来是文本配置

如果你是一个简单的一行文本展示,就很简单,和dot一行,只需要稍加修饰即可。如果是多行文本(rich内不能嵌套,如果可以嵌套也就相当于一行了),需要对每行元素设置不同的padding微调到适配即可。如{dot|}\n{a|KaTeX parse error: Expected 'EOF', got '}' at position 17: …params.percent}}̲{b|%}\n{c|{params.name}} 有三个元素:

rich: {
  dot: {
    backgroundColor: "auto",
    width: 0,
    height: 0,
    borderRadius: 3,
    fontSize: 16,
    padding: [3, -3, 3, -3]
  },
  a: {
    fontSize: 16,
    align: "left",
    padding: [-35, 3, -10, 5]
  },
  b: {
    fontSize: 10,
    align: "left",
    padding: [-30, 3, -10, 5]
  },
  c: {
    fontSize: 10,
    align: "left",
    padding: [-10, 3, -10, 5]
  }
}

每一个元素都要调整其padding值使其能够和圆点对齐。
完成效果
如上配置,就很容易就能实现这个效果,而且小圆点颜色也可以自动适配当前部分的颜色。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaolongyu3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值