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

如何调整Pandas条形图(bar plot)中分类变量的条形顺序?

调整分类变量条形图的顺序

这个问题我之前也碰到过!默认情况下value_counts()是按计数从高到低排序的,所以绘图时条形就跟着这个顺序走了。要调整成你想要的自定义顺序,有几种简单的方法:

方法1:将变量转为有序分类(推荐,适合长期固定顺序)

如果后续分析也需要保持这个分类顺序,可以先把CatVar转换成有序分类变量,指定你想要的顺序。这样不管是value_counts()还是绘图,都会遵循这个顺序:

import pandas as pd

# 注意要和你数据里的取值大小写完全一致(比如你的数据是"Medium"首字母大写)
df['CatVar'] = pd.Categorical(df['CatVar'], categories=['Low', 'Medium', 'High'], ordered=True)

# 再绘图就会按指定顺序展示了
df.CatVar.value_counts().plot(kind="bar")

方法2:临时重排计数结果(不修改原数据)

如果不想改动原数据集,只是临时调整绘图顺序,可以用reindex()方法按自定义顺序重新排列value_counts()的结果:

# 定义你想要的条形顺序
desired_order = ['Low', 'Medium', 'High']

# 按顺序提取计数,缺失的类别会显示为0(如果有的话)
sorted_counts = df.CatVar.value_counts().reindex(desired_order)

# 绘制条形图
sorted_counts.plot(kind="bar")

方法3:手动指定matplotlib的x轴顺序

如果你直接用matplotlib绘图,也可以手动设置条形的位置和标签:

import matplotlib.pyplot as plt

counts = df.CatVar.value_counts()
desired_order = ['Low', 'Medium', 'High']
# 按顺序提取对应的计数和标签
sorted_counts = [counts[cat] for cat in desired_order]

plt.bar(desired_order, sorted_counts)
plt.show()

需要注意的是:所有方法里的类别名称要和你数据中的取值大小写、拼写完全一致,不然会出现计数为0或者不匹配的情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:46