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

如何在Plotly中实现Y轴降序排序?——解决2015年美国Top50出发量机场柱状图顺序反转问题

解决Plotly柱状图Y轴降序排序的问题

嘿,我之前也碰到过一模一样的需求——把TopN的柱状图从升序(出发量最低的机场在顶部)改成降序(出发量最高的机场在顶部),给你分享几个实用的办法:

方法1:先对数据源排序(推荐,更稳妥)

在绘图前先把你的数据集按出发量从高到低排序,Plotly会直接沿用这个顺序渲染Y轴的类别。假设你用Pandas处理数据:

# 假设你的数据框是df,包含机场名称列(比如叫airport)和出发量列(departures_2015)
# 按出发量降序排序
df_sorted = df.sort_values(by='departures_2015', ascending=False)

# 用排序后的数据集绘图
import plotly.express as px
fig = px.bar(df_sorted, x='departures_2015', y='airport')
fig.show()

这种方法的好处是数据本身的顺序和图表展示一致,后续如果要做其他分析或调整,也不会出现顺序混乱的问题。

方法2:直接在Plotly布局中调整Y轴顺序

如果不想改动原始数据集,可以直接通过布局参数强制指定Y轴的类别顺序:

用Plotly Express的写法:

import plotly.express as px

fig = px.bar(df, x='departures_2015', y='airport')
# 指定Y轴的类别顺序为出发量降序的机场列表
fig.update_layout(
    yaxis=dict(
        categoryorder='array',
        categoryarray=df.sort_values('departures_2015', ascending=False)['airport'].tolist()
    )
)
fig.show()

用Graph Objects的写法(如果你用的是底层API):

import plotly.graph_objects as go

# 先获取降序排列的机场名称列表
sorted_airports = df.sort_values('departures_2015', ascending=False)['airport'].tolist()

fig = go.Figure(data=[
    go.Bar(x=df['departures_2015'], y=df['airport'])
])
fig.update_layout(
    yaxis=dict(
        categoryorder='array',
        categoryarray=sorted_airports
    )
)
fig.show()

这里的categoryorder='array'告诉Plotly我们要自定义类别顺序,categoryarray就是我们提前生成好的降序机场列表。

小提醒

确保你的Y轴数据是类别型(字符串),如果是数值型的话,Plotly会默认按数值大小排序,但你的场景里是机场名称,所以完全没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:58:11