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
相关产品推荐
相关产品推荐

