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

Python使用Plotly绘制饼图时如何移除0%标签并保留零值对应图例项

Plotly 饼图保留0值分类图例、隐藏0%标签实现方案

实现核心逻辑

首先需要确保所有需要展示的分类都明确传入配置中,再通过两个关键参数分别控制图例保留规则和饼块文本显示规则:

  • 关闭Plotly默认的分类排序功能,避免0值分类被自动过滤
  • 给每个分类单独配置文本显示规则,0值分类不展示饼块内的百分比文本

完整代码示例

使用plotly.express实现

import plotly.express as px

# 所有需要展示的分类,包含数值为0的分类
category_list = ["分类A", "分类B", "分类C", "分类D"]
value_list = [45, 0, 30, 25]

fig = px.pie(
    names=category_list,
    values=value_list,
    # 关闭自动排序,严格保留传入的所有分类
    sort=False
)

# 配置文本显示规则
fig.update_traces(
    # 百分比显示格式,可根据需求调整小数位数
    texttemplate="%{percent:.0%}",
    # 仅数值大于0的分类显示内部文本,0值分类不显示
    textposition=["inside" if val > 0 else "none" for val in value_list]
)

fig.show()

使用plotly.graph_objects实现

import plotly.graph_objects as go

category_list = ["分类A", "分类B", "分类C", "分类D"]
value_list = [45, 0, 30, 25]

fig = go.Figure(data=[go.Pie(
    labels=category_list,
    values=value_list,
    sort=False,
    texttemplate="%{percent:.0%}",
    textposition=["inside" if val > 0 else "none" for val in value_list]
)])

fig.show()

关键参数说明

  • sort=False:Plotly默认会按数值从大到小排序分类,同时自动过滤数值为0的分类,关闭该功能后会严格按照传入的分类顺序保留所有分类,所有分类都会显示在图例中
  • textposition列表推导:针对每个分类的数值单独判断显示规则,0值分类不渲染任何文本,自然不会出现0%标签
  • 如需调整百分比显示精度,修改texttemplate中的.0%即可,例如.1%代表保留1位小数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:08