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

Python使用matplotlib基于给定百分比绘制双切片饼图的问题

核心错误原因

  1. 你定义的pct_tested是字符串类型,自带%符号,无法直接作为数值参数传入绘图函数,也不能直接参与数值计算。
  2. 仅传入[number_of_tested]时,matplotlib的饼图会将传入列表的数值总和作为100%,单个数值自然会显示为占比100%的单切片。

最优解决方法

建议优先保留原始数值做计算和绘图,格式化字符串仅用于打印输出,参考代码:

# 先计算纯数值的已测试占比,用于后续计算和绘图
tested_ratio = number_of_tested / len(df.index)
# 需要打印美观的百分比结果时,再转成格式化字符串
pct_tested = "{:.2%}".format(tested_ratio)

# 绘图时传入两个数值:已测试占比、未测试占比
plt.pie(
    [tested_ratio, 1 - tested_ratio],
    colors=colors,
    autopct='%.2f%%', # 该参数会自动将比例转换为带%的显示格式
    labels=['已测试', '未测试'] # 可选:添加标签区分两个切片
)

特殊场景适配(仅能拿到格式化后的pct_tested字符串)

如果你的场景里没有原始数值,只能拿到已格式化的pct_tested字符串,可以先将字符串转换为纯数值再使用,参考代码:

# 去除字符串末尾的%,转成浮点数后除以100,得到纯数值占比
tested_ratio = float(pct_tested.strip('%')) / 100
plt.pie(
    [tested_ratio, 1 - tested_ratio],
    colors=colors,
    autopct='%.2f%%'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:09:02