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

如何调整Pyplot中分类变量(up/mid/down)的显示顺序

嘿,这个问题我太熟了!在Matplotlib里调整分类变量的显示顺序其实没那么复杂,主要分两种场景来处理,看你是直接用Matplotlib原生绘图,还是结合Pandas来管理数据:

方法1:直接给Matplotlib坐标轴指定顺序

如果是直接用Matplotlib的bar、boxplot等函数绘图,你可以在绘图后手动指定x轴刻度的标签顺序:

import matplotlib.pyplot as plt

# 示例数据:分类和对应的速度值
categories = ['up', 'mid', 'down']
speed_data = [14, 21, 16]

# 先绘制基础图形
plt.bar(categories, speed_data)

# 强制设置你想要的顺序——比如这里改成down-mid-up
plt.xticks(ticks=[0, 1, 2], labels=['down', 'mid', 'up'])

plt.xlabel('Category')
plt.ylabel('Speed')
plt.show()

要是你想要up-mid-down的顺序,只需要把labels参数改成['up', 'mid', 'down']就行,非常直接。

方法2:用Pandas有序分类从根源控制(推荐)

如果你的数据存在Pandas的DataFrame/Series里,更优雅的方式是把分类列转换成有序分类类型,这样不管是用Pandas自带的绘图函数,还是Seaborn,都会自动遵循你指定的顺序:

import pandas as pd
import matplotlib.pyplot as plt

# 构造示例数据集
df = pd.DataFrame({
    'category': ['up', 'mid', 'down', 'up', 'mid', 'down'],
    'speed': [12, 23, 15, 13, 21, 17]
})

# 将category列转为有序分类,指定目标顺序(比如down-mid-up)
df['category'] = pd.Categorical(
    df['category'],
    categories=['down', 'mid', 'up'],
    ordered=True
)

# 分组求均值后绘图,顺序会自动匹配你设置的分类顺序
df.groupby('category')['speed'].mean().plot(kind='bar')

plt.xlabel('Category')
plt.ylabel('Average Speed')
plt.show()

要是用Seaborn绘图,也可以直接在函数里加order参数快速指定顺序,比如:

import seaborn as sns
sns.boxplot(x='category', y='speed', data=df, order=['down', 'mid', 'up'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:34:12