You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Matplotlib饼图中的零值标签?

解决Matplotlib饼图隐藏零值标签的问题

嘿,我明白你遇到的麻烦了——当数据里有0值的时候,对应的标签还是会出现在饼图上,确实很影响视觉效果。咱们直接来搞定这个问题:

核心思路

问题出在你直接用原始的names列表作为标签,不管对应数值是不是0都会被显示。所以我们需要先过滤掉数值为0的条目,只保留有实际值的名称和数据来绘制饼图。

修改后的代码

import matplotlib.pyplot as plt

data = {'milk': 45, 'water': 25, 'oil': 0}
# 配对名称和数值,过滤掉值为0的项
filtered_items = [(name, value) for name, value in data.items() if value > 0]
# 拆分回名称和数值列表
names = [item[0] for item in filtered_items]
values = [item[1] for item in filtered_items]

plt.pie(values, labels=names)
plt.show()

为什么这样有效?

通过列表推导式,我们只保留了value > 0的条目,这样'oil'因为对应值为0就被排除在外了,饼图里只会显示有实际数据的'milk'和'water',标签自然也不会出现零值对应的项。

针对你提到的数值列表[300, 250, 0, 425]的情况

如果是用列表而非字典的场景,同样可以用类似的方法过滤:

import matplotlib.pyplot as plt

values = [300, 250, 0, 425]
names = ['A', 'B', 'C', 'D']
# 过滤零值条目
filtered = [(n, v) for n, v in zip(names, values) if v > 0]
names_filtered, values_filtered = zip(*filtered)  # 快速拆分

plt.pie(values_filtered, labels=names_filtered)
plt.show()

这样处理后,对应0值的'C'标签就会被隐藏,饼图只展示有数据的部分。

内容的提问来源于stack exchange,提问作者Mikey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 16:32:36