Echarts饼图自定义提示框内容

本文介绍如何在Echarts饼图中自定义提示框内容,通过后台将数据包装成特定格式,结合tooltip配置,参考相关教程实现个性化显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:
在这里插入图片描述
首先在后台把数据包装成下面格式,lightTypeList集合中的数据格式
在这里插入图片描述

//获取饼状图的数据
function finLightRoadTotal(){
		var lightType = $("#lightType").combobox('getValue');
		// var areaId = $("#areaId").combobox('getValue');
		var roadId = $("#roadId").combobox('getValue');
		progressLoad();
		$.post("${path}/rul",{lightType:lightType,roadId:roadId},function(data){
			progressClose();
			console.log(data);
			//路段名称集合,也就是legend要显示的
			var roadName =  data.map(function (item) {
				return item.roadName;
			});
			var list = [];  //就是series中data需要的数据
			//这里注意,一定要把对象中的属性命名为name和value,这样可以覆盖series中的属性,使用我们自己的数据
			$.each(data,function (i,item) {
				var light = new Object();
				light.value=item.lightTotal;
				light.name=item.roadName;
				light.lightTypeList=item.lightTypeList;
				list.push(light);
			})
			showPieChar(roadName,list);
		},'json');
	}

//显示饼状图
    function showPieChar(roadName,list){
		var pieChart = echarts.init(document.getElementById('pieChart'));
		var option = {
			tooltip: {
				trigger: 'item',
				formatter: function(param)  //自定义弹出框的内容
				{
					var lightTypeList = param.data.lightTypeList;
					//拼接一个字符串
					var res =  param.data.name + '<br/>';
					//循环遍历内容
					for(var i = 0, length = lightTypeList.length; i < length; i++) {
						var val = lightTypeList[i].lightTotal;
						res += lightTypeList[i].lightName + ':' + val + '<br/>';
					}
					return res;
				}
			},
			legend: {
				orient: 'horizontal',
				x: 'right',     //设置legend的左右位置
				y: 'top',      //设置legend的上下位置
				data: roadName
			},
			series: [
				{
					name: '路段类型',
					type: 'pie',
					radius: '55%',
					center: ['50%', '60%'],
					data: list,
					emphasis: {
						itemStyle: {
							shadowBlur: 10,
							shadowOffsetX: 0,
							shadowColor: 'rgba(0, 0, 0, 0.5)'
						}
					}
				}
			]
		};
		pieChart.setOption(option);
	}

tooltip是参考:https://www.cnblogs.com/nizuimeiabc1/p/8525170.html

### 自定义 ECharts 提示文字的位置 在 ECharts 中,可以通过配置 `tooltip` 属性来自定义提示框的内和样式。如果需要调整提示文字的具体位置,则可以利用 `position` 参数来控制提示框相对于鼠标指针或者数据项的位置[^2]。 以下是具体的实现方法: #### 1. 使用固定位置 通过设置 `tooltip.position` 的具体坐标值,可以让提示框始终显示在一个固定的屏幕位置上。例如: ```javascript tooltip: { trigger: 'item', position: ['50%', '50%'], // 提示框会定位到表中心区域 formatter: '{a} <br/>{b}: {c} ({d}%)' } ``` #### 2. 动态计算位置 当希望提示框跟随鼠标的移动而动态变化时,可传入一个回调函数作为 `position` 值。该回调函数接收两个参数:第一个是当前的数据对象;第二个是一个布尔值表示是否为多系列触发。 ```javascript tooltip: { trigger: 'item', position: function (point, params, domEvent, rect, size) { var x = point[0]; // 当前鼠标所在横坐标 var y = point[1]; // 当前鼠标所在纵坐标 return [x + 10, y + 10]; // 调整偏移量使提示框不遮挡原点 }, formatter: '{a} <br/>{b}: {c} ({d}%)' } ``` #### 3. 结合 Legend 实现复杂交互效果 对于更复杂的场景比如带有超长文本处理的 legend 和 value 显示功能,可以在初始化 chart 后进一步操作 DOM 来增强用户体验[^1]。注意此时可能还需要额外引入 CSS 样式表用于美化布局。 最终综合以上技术要点即可满足题目描述中的各项需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值