echarts饼图使用legend,饼图偏移时,中心文字或图片如何居中显示


前言

最近遇到一个需求是,echarts饼图向左偏一定位置,但是在饼图中间需要镶嵌图片以及接口查出来的一部分数据,在网上搜了一下,发现比较少,在这里记录一下
以下是最终效果图:
在这里插入图片描述


一、echarts进行偏移

首先是对echarts饼图进行向左偏移

series: [
	 { 
	 	name: 'Access From',
	    type: 'pie',
	    radius: ['55%', '70%'],
	    avoidLabelOverlap: false,
	    center: ['35%', '50%'],// 通过center属性设置偏移量
	}
]

二、对echarts中心设置图片和文字展示

1.设置背景图片

通过echarts中的graphic属性设置中心的背景图片

graphic: {
        elements: [{// 环形图中间背景图
            type: 'image',
            style: {
              image: totalRisk,
              width: 130, 
              height: 130, //设置图片的宽高度
            },
            left: "22%",
            top: "center", // 设置图片在X轴,Y轴的位置,这里就需要自己调试了
          }]
        },

2.设置中心文字

在series属性中设置对应的文字

{
            name: '中间文字',
            z: 100,
            type: 'gauge', // 这个type类型要设置为gauge
            radius: '-50%',
            center: ['35%', '50%'],// 需和type: 'pie'中的center一致
            // 配置中间的数字的样式
            detail: {
              // 调节数字位置
              offsetCenter: [-1,12],
              color: '#fff',
              fontSize:'22px'
            },
            pointer: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            axisLine: {
              show: false,
            },
            splitLine: {
              show: false,
            },
            axisLabel: {
              show: false,
            },
            // 中间的字和数字 数据
            data: [
              {
                value: this.totalRiskCount,
                name:'总风险数',
                title:{// 配置“总风险数”的样式
                  show:true,
                  color: '#fff',
                  offsetCenter:[0,'20%']// 配置“总风险数”的位置
                }
              },

            ],
          },

总结

其实通过graphic也可同时设置中间的文字,也可调节文字的位置,但是如果文字是动态的话,就不会一直居中。

### 自定义 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、付费专栏及课程。

余额充值