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

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.xdnf.cn/news/18072.html

相关文章:

  • 0815 UDP通信协议TCP并发服务器
  • Mac (三)如何设置环境变量
  • 深入理解 Python 元类中的 __prepare__ 方法:掌控类属性定义顺序的艺术
  • docker镜像解决的一些问题
  • 双重调度(Double Dispatch):《More Effective C++》条款31
  • [Linux] Linux网络管理
  • 16-集合的Stream编程
  • 宋红康 JVM 笔记 Day03|内存结构概述、类加载器与类的加载过程、类加载器分类
  • 深入解析 @nestjs/typeorm的 forRoot 与 forFeature
  • C++面试题及详细答案100道( 31-40 )
  • 算法题Day2
  • Python 类元编程(元类的特殊方法 __prepare__)
  • MixOne:Electron Remote模块的现代化继任者
  • 【低成本扩容】动态扩容实战指南
  • 选择式与生成式超启发算法总结
  • 《设计模式》代理模式
  • 基于Python的电影评论数据分析系统 Python+Django+Vue.js
  • 【运维心得】三步10分钟拆装笔记本键盘
  • Langfuse2.60.3:独立数据库+docker部署及环境变量详细说明
  • 数据清洗处理
  • 【数据结构】深入理解单链表与通讯录项目实现
  • 【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
  • 典型 RAG实现:NFRA智能问答系统实战的总结与反思
  • 数据结构:迭代方法(Iteration)实现树的遍历
  • ubuntu更新chrome版本
  • 平滑方法(smoothing)
  • 零知开源——基于STM32F407VET6的TCS230颜色识别器设计与实现
  • 两个简单的设计模式的例子
  • 【轨物方案】预防性运维:轨物科技用AI+机器人重塑光伏电站价值链
  • JavaScript 核心语法与实战笔记:从基础到面试高频题