当前位置: 首页 > 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.dtcms.com/a/334874.html

相关文章:

  • 【集合框架List进阶】
  • 【UHD】vivado 2021.1 编译
  • 选择式与生成式超启发算法总结
  • 模型训练监控:TensorBoard与Weights Biases (WB) 使用详解
  • CVE-2024-28752漏洞复现
  • 电子电气架构 --- 软件项目配置管理
  • 序列晋升7:架构原则三十诫
  • 内网穿透实战笔记 1panel 面板部署 frps,Windows 部署 frpc
  • 程序设计|C语言教学——C语言基础3:函数、数组、指针
  • Python虚拟环境与包管理工具(uv、Conda)
  • 一汽红旗7月销量37324辆 同比增长21.1%
  • B站 韩顺平 笔记 (Day 20)
  • P2169 正则表达式
  • 如何运用好DeepSeek为自己服务:智能增强的范式革命 1.1 认知增强的三次浪潮
  • 项目管理进阶——解读大型IT系统集成项目实施要点培训【附全文阅读】
  • GLM-4-Flash:智谱AI推出的首个免费API服务,支持128K上下文
  • 制作 Windows 11 启动U盘
  • Redis缓存
  • Win11和Win10共享打印机提示709用添加Windows凭据来解决的小方法
  • select、poll 和 epoll
  • Python入门第5课:如何定义和使用函数,提升代码复用性
  • Jenkins Pipeline中参数化构建
  • 【wmi异常】关于taskkill命令提示“错误:找不到” 以及无法正常获取设备机器码的处理办法
  • 读书是一场最低成本的高级成长
  • 嵌入式硬件篇---运算放大器
  • OpenCV 图像处理基础操作指南(二)
  • NetBIOS 设置
  • MySQL的索引优化与查询优化:
  • AI搜索引擎下的内容优化新范式:GEO的关键技术解析
  • 12V电压控制小板