当前位置: 首页 > news >正文

eChart饼环pie中间显示总数_2个以上0值不挤掉

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>环饼图显示总数</title>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
<style>
#main { width: 600px; height: 400px; margin: 0 auto; }
</style>
</head>
<body>
<div id="main"></div>
<script type="text/javascript">
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);

const data = [
{value: 335, name: '直接访问'},
{value: 310, name: '邮件营销'},
{value: 234, name: '联盟广告'},
{value: 0, name: '视频广告'},
{value: 0, name: '搜索引擎'}
];

const total = data.reduce((sum, item) => sum + item.value, 0);

var option = {
tooltip: {
trigger: 'item',
  // 关键修复:1.确保0值也显示提示
formatter: function(params) {
return `${params.name}: ${params.value}`;
}
},
legend: {
top: '5%',
left: 'center'
},
series: [{
name: '访问量统计',
type: 'pie',
radius: ['40%', '70%'],
//关键修复:2.确保0值也显示提示,强制显示0值项
stillShowZeroSum: true,
 //关键修复:3.确保0值也显示提示 设置最小角度使0值可见
minAngle: 1,  // 最小角度5度(可调整)

avoidLabelOverlap: false,
// 关键修改:禁用普通状态下的标签显示
label: {
show: false, // 关闭每个扇形的标签
position: 'center'
},
  // 关键修改:只在高亮状态显示中心标签
emphasis: {
disabled: false, // 确保高亮效果可用
scale: true,     // 启用放大效果
scaleSize: 5,    // 放大尺寸
label: {
show: false,
position: 'center',
formatter: `总访问量\n{total|${total}}`,  // 只显示总数
fontSize: 18,
fontWeight: 'normal',
rich: {
total: {
fontSize: 28,
fontWeight: 'bold',
color: '#333',
lineHeight: 40
}
}
}
},
labelLine: {
show: false
},
data: data
}]
};

        myChart.setOption(option);

// 添加自定义中心标签(非交互状态时显示)
const centerText = document.createElement('div');
centerText.style.position = 'absolute';
centerText.style.textAlign = 'center';
centerText.style.pointerEvents = 'none';
centerText.innerHTML = `
<div style="font-size: 18px; color: #666;">总访问量</div>
<div style="font-size: 28px; font-weight: bold; color: #333;">${total}</div>
`;

  // 将中心标签定位到图表中心
chartDom.appendChild(centerText);

// 监听图表尺寸变化,保持居中
const resizeObserver = new ResizeObserver(() => {
const { width, height } = chartDom.getBoundingClientRect();
centerText.style.width = width + 'px';
centerText.style.top = (height / 2 - 30) + 'px';
});
resizeObserver.observe(chartDom);
</script>
</body>
</html>

http://www.lryc.cn/news/622639.html

相关文章:

  • VS Code配置MinGW64编译非线性优化库NLopt
  • AI云电脑盒子技术分析——从“盒子”到“算力云边缘节点”的跃迁
  • JetPack系列教程(八):PDF库——让Android应用也能优雅“翻页”
  • 面试问题详解一:什么是 Qt?
  • 数字分类:机器学习经典案例解析
  • 电路方案分析(二十一)笔记本电脑散热风扇参考设计
  • Dify 从入门到精通(第 38/100 篇):Dify 的实时协作功能
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(2):11-20语法
  • 【学习嵌入式day-26-线程间通信】
  • 音视频学习(五十四):基于ffmpeg实现音频重采样
  • 学习游戏制作记录(制作系统与物品掉落系统)8.16
  • Redis 04 Reactor
  • 【Java web】Servlet 详解
  • 数据可视化怎么结合数字孪生?实战心得:从数据到场景的 3 步走
  • 学习嵌入式第三十天
  • WSL中占用磁盘空间大问题解决
  • 通过rss订阅小红书,程序员将小红书同步到自己的github主页
  • 消息中间件Tibco 和 Kafka 及 Pulsar
  • 【LeetCode 热题 100】70. 爬楼梯——(解法二)自底向上
  • 《从入门到精通:Kafka核心原理全解析》
  • 博弈论07——Lemke-Howson 算法
  • EXTI外部中断的执行逻辑|以对射式红外传感器计次为例
  • 九尾狐未来机械锂晶核
  • 【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
  • 0815 UDP通信协议TCP并发服务器
  • JavaEE 初阶第十九期:网络编程“通关记”(一)
  • MM-Spatial和Spatial-MLLM论文解读
  • 使用IntersectionObserver实现页面右侧运营位区域固定,和页面列表数据分页加载
  • Java后台生成多个Excel并用Zip打包下载
  • 深入剖析 TOTP 算法:基于时间的一次性密码生成机制