echarts 饼图的labelLine 线的长度自适应

labelLayout:标签的统一布局配置。
该配置项是在每个系列默认的标签布局基础上,统一调整标签的(x, y)位置,标签对齐等属性以实现想要的标签布局效果

该配置项也可以是一个有如下参数的回调函数

// 标签对应数据的 dataIndex
dataIndex: number
// 标签对应的数据类型,只在关系图中会有 node 和 edge 数据类型的区分
dataType?: string
// 标签对应的系列的 index
seriesIndex: number
// 标签显示的文本
text: string
// 默认的标签的包围盒,由系列默认的标签布局决定
labelRect: {x: number, y: number, width: number, height: number}
// 默认的标签水平对齐
align: 'left' | 'center' | 'right'
// 默认的标签垂直对齐
verticalAlign: 'top' | 'middle' | 'bottom'
// 标签所对应的数据图形的包围盒,可用于定位标签位置
rect: {x: number, y: number, width: number, height: number}
// 默认引导线的位置,目前只有饼图(pie)和漏斗图(funnel)有默认标签位置
// 如果没有该值则为 null
labelLinePoints?: number[][]

代码如下:

 labelLayout: (params) => {
              const isLeft = params.labelRect.x < this.myChart5.getWidth() / 2,
                points = params.labelLinePoints
              points[2][0] = isLeft ? params.labelRect.x : params.labelRect.x + params.labelRect.width
              return {
                labelLinePoints: points
              }
            },  //label线设置

完整代码:

		tbyqEcharts(domId, color, gzVal, czVal) {
			var chartDom = document.getElementById(domId)
			var myChart = echarts.init(chartDom)
			myChart.setOption({
				color,
				series: {
					type: 'pie',
					// radius: ['42%', '60%'],
					radius: ['35%', '50%'],
					// left: 20,
					label: {
						minMargin: 50,
						edgeDistance: 10,
						fontSize: '12px'
					},
					labelLine: {
						lineStyle: {
							type: [5]
						},
						length: 2,
						length2: 1
					},
					labelLayout: function (params) {
						var isLeft = params.labelRect.x < myChart.getWidth() / 2
						var points = params.labelLinePoints
						// Update the end point.
						points[2][0] = isLeft ? params.labelRect.x : params.labelRect.x + params.labelRect.width
						return {
							labelLinePoints: points,
							dy: -10,
							dx: 0
						}
					},
					data: [
						{ value: gzVal, name: '过载' },
						{ value: czVal, name: '重载' }
					]
				}
			})
		},
	mounted() {
		this.$nextTick(() => {
			this.tbyqEcharts('heavy-item-left', ['#5079F8', '#f65c66'], this.tb.gzVal, this.tb.czVal)
			this.tbyqEcharts('heavy-item-right', ['#2076c1', '#f65c66'], this.tb.gzVal, this.tb.czVal)
			this.tbyqEcharts(
				'heavy-item-center',
				['rgba(248,171,80,1)', '#f65c66'],
				this.tb.gzVal,
				this.tb.czVal
			)
		})
	},

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值