echarts 多圆环图表

请添加图片描述

option如下

vue代码

const d = [
	{value: 348, name: '内部人员'},
	{value: 735, name: '外部人员'}
]
const colors = ['#cfc100', '#1091ca']
const colors2 = ['#fff000', '#11b6ff']
const el = this.$refs.bgry_chart as HTMLElement
const width = el.offsetWidth
const myEchart = echarts.init(el)
myEchart.setOption({
	color: colors,
	title: {
		text: '1083\n总数',
		textAlign: 'center',
		textStyle: {
			color: 'white'
		},
		top: 104,
		left: 154
	},
	tooltip: {
		trigger: 'item'
	},
	legend: {
		bottom: '15%',
		left: 'center',
		icon: "rect",
		orient: 'vertical',
		itemWidth: 14,
		itemHeight: 14,
		formatter: function (name, p)  {
			let sum = 0
			const c = d.find(item => item.name === name)
			d.forEach(i => {
				sum += i.value
			})
			return name + '   ' + c.value + '个   ' + ((c.value/sum)*100).toFixed(0) + '%'
		},
		textStyle: {
			color: 'white'
		}
	},
	series: [
		{
			name: '办公人员',
			type: 'pie',
			radius: ['34%', '46%'],
			top: -100,
			avoidLabelOverlap: false,
			itemStyle: {
				borderColor: 'rgba(255,255,255,0)',
				borderWidth: 2,
				color: (params: any) => {
					return {
						type: 'radial',
						x: 159,
						y: 125,
						r: 106,
						colorStops: [{
							offset: .64, color: colors[params.dataIndex] // 0% 处的颜色
						}, {
							offset: .69, color: colors2[params.dataIndex] // 100% 处的颜色
						}, {
							offset: 1, color: colors2[params.dataIndex] // 100% 处的颜色
						}],
						global: true // 缺省为 false
					}
				}
			},
			label: {
				show: false,
			},
			labelLine: {
				show: false
			},
			data: d
		},{
			name: '办公人员',
			type: 'pie',
			radius: ['54%', '56%'],
			top: -100,
			avoidLabelOverlap: false,
			itemStyle: {
				color: '#1091ca',
			},
			label: {
				alignTo: 'edge',
				color: '#ffffff',
				formatter: '{value|{c}}\n{name|{b}}',
				minMargin: 15,
				edgeDistance: 10,
				lineHeight: 20,
				rich: {
					time: {
						fontSize: 10
					}
				}
			},
			labelLine: {
				length: 15,
				maxSurfaceAngle: 80
			},
			labelLayout: function (params: any) {
				var isLeft = params.labelRect.x < width / 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
				};
			},
			data: d,
			silent: true,
		}, {
			name: '办公人员',
			type: 'pie',
			radius: ['26%', '28%'],
			top: -100,
			avoidLabelOverlap: false,
			itemStyle: {
				color: '#1091ca',
			},
			label: {
				show: false,
			},
			labelLine: {
				show: false
			},
			data: d,
			silent: true,
		}
	]
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bdawn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值