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

Python2.7下绘制数据列全取值对应独立条形柱问题求助

问题原因

你代码的核心问题是OUTCOMES列表的结构不符合预期:你直接把num_range作为单个元素追加到了枚举值列表末尾,最终OUTCOMES的结构是['NOT_TESTED', 'NOT_COMPLETED', 'TOO_LOW', 包含所有数值的列表/元组],分类配置里根本没有150、155这类单独的数值项,自然无法生成对应柱子。你之前尝试换成xrange、tuple都没用,也是因为没有把数值项展开拼接到OUTCOMES里。

修复代码

根据你TP1列数值的存储类型,选择对应方案即可:

方案1:TP1列的数值为整数类型

num_range = range(150, 190, 5)
# 用列表拼接把数值项展开到OUTCOMES里
OUTCOMES = ['NOT_TESTED', 'NOT_COMPLETED', 'TOO_LOW'] + num_range
df["outcomes_col"] = df["TP1"].astype("category")
df["outcomes_col"].cat.set_categories(OUTCOMES, inplace = True)
sns.countplot(x= "outcomes_col", data=df, palette='Magma')
plt.xticks(rotation = 90)
plt.ylabel('Amount')
plt.xlabel('Outcomes')
plt.title("Outcomes per testing")
plt.show()

如果需要把190也纳入统计,把range(150, 190, 5)改成range(150, 195, 5)即可。

方案2:TP1列的数值为字符串类型

如果你的TP1里存的是'150'这类字符串格式的数值,需要先把数值转成字符串再拼接:

num_range = [str(x) for x in range(150, 190, 5)]
OUTCOMES = ['NOT_TESTED', 'NOT_COMPLETED', 'TOO_LOW'] + num_range
df["outcomes_col"] = df["TP1"].astype("category")
df["outcomes_col"].cat.set_categories(OUTCOMES, inplace = True)
sns.countplot(x= "outcomes_col", data=df, palette='Magma')
plt.xticks(rotation = 90)
plt.ylabel('Amount')
plt.xlabel('Outcomes')
plt.title("Outcomes per testing")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:00:07