带百分比(白色)的环行图

 

 

<template>
	<div id="xxxx" style="width: 100%; height: 100%;"></div>
</template>

<script>
	export default {
		data() {
			return {

			}
		},
		mounted() {
			this.myecharts();
			this.WidthAdaptive();
		},
		watch: {

		},
		methods: {
			WidthAdaptive(res) {
				var windth = window.screen.width;
				let fontSize = windth / 4422;
				return fontSize * res;
			},
			myecharts() {
				let myChart = this.$echarts.init(document.getElementById('xxxx'));

				// 数据
				const dataArray = [{
						name: '汉族',
						value: 50
					},
					{
						name: '回族',
						value: 30
					},
					{
						name: '满族',
						value: 10
					},
					{
						name: '其他',
						value: 10
					}
				]

				// 计算总数
				let total = dataArray.reduce((p, v) => {
					return p + v.value
				}, 0)

				// 颜色
				const color = ['#00D5FF', '#00BF8F', '#0095FF', '#FFCF40']

				// tooltip
				let tooltip = {
					trigger: 'item',
					show: true,
					backgroundColor: 'rgba(2, 26, 47, 0.62)',
					borderColor: 'transparent',
					padding: [8, 20, 8, 8],
					textStyle: {
						color: '#fff',
						opacity: 1,
						fontSize: this.WidthAdaptive(16),
					},
					axisPointer: {
						type: 'line'
					}
				}
				
				// graphic
				// const graphic = {
				// 	elements: [{
				// 		type: "image",
				// 		style: {
				// 			image: require("../../img/bg.png"),
				// 			width: this.WidthAdaptive(343),
				// 			height: this.WidthAdaptive(343),
				// 		},
				// 		left: 'center',
				// 		top: 'center',
				// 		silent: true,
				// 	}]
				// }

				// series
				const series = [{
					type: 'pie',
					radius: ['40%', '55%'],
					center: ['50%', '50%'],
					hoverAnimation: true,
					hoverOffset: this.WidthAdaptive(10),
					color: color,
					itemStyle: {
						borderColor: "rgba(2, 26, 47, 0.62)",
						borderWidth: this.WidthAdaptive(5)
					},
					label: {
						show: true,
						padding: [this.WidthAdaptive(-30), this.WidthAdaptive(-50), 0, this.WidthAdaptive(-50)],
						fontSize: this.WidthAdaptive(16),
						color: '#ffffff',
						formatter: '{d}%'
					},
					labelLine: {
						normal: {
							length: this.WidthAdaptive(20),
							length2: this.WidthAdaptive(90),
							lineStyle: {
								color: '#ffffff',
								opacity: 0.6
							}
						}
					},
					data: dataArray
				}]

				// 渲染
				var option = {
					tooltip,
					series,
					color,
					// graphic
				}
				myChart.setOption(option);
				window.onresize = myChart.resize;

				//获取最大值下标
				var ds = option.series[0].data;
				var max = ds[0];
				var indexs = 0;
				for (var i = 0; i < ds.length; i++) {
					if (max < ds[i]) {
						max = ds[i];
						indexs = i;
					}
				}

				//默认选中最大值
				myChart.dispatchAction({
					type: 'highlight',
					seriesIndex: 0, // 显示第几个series
					dataIndex: indexs // 显示第几个数据
				});


				let index = 0;
				myChart.on("mouseover", function(e) {
					if (e.dataIndex != index) {
						myChart.dispatchAction({
							type: "downplay",
							seriesIndex: 0,
							dataIndex: index
						});
					}
				});
				myChart.on("mouseout", function(e) {
					index = e.dataIndex;
					myChart.dispatchAction({
						type: "highlight",
						seriesIndex: 0,
						dataIndex: e.dataIndex
					});
				});
			}
		},
	}
</script>

<style scoped>
</style>

  

posted @ 2022-03-28 15:54  大云之下  阅读(38)  评论(0编辑  收藏  举报
大云之下