由于缺少数据,Plotly Express 条形图重新排序了 x 轴

问题描述 投票:0回答:1

我有一些数据,其中包括年季度格式的日期。

对数据框进行排序效果很好,但是在绘制数据时,

Plotly
会自动重新排序 x 轴,将缺失值的数据放在末尾,而不是遵循所需的顺序。

# Example data that is not yet ordered on 'Date'
import pandas as pd
import plotly.express as px
df = pd.DataFrame([
       ['2021-Q4', 'A', 1],
       ['2021-Q4', 'B', 5],
       ['2022-Q1', 'B', 5],
       ['2023-Q2', 'B', 3],
       ['2023-Q3', 'B', 16],
       ['2022-Q2', 'B', 4],
       ['2022-Q2', 'A', 1],
       ['2022-Q3', 'B', 5],
       ['2022-Q4', 'B', 6],
       ['2022-Q4', 'A', 4],
       ['2023-Q1', 'A', 1],
       ['2023-Q1', 'B', 9],
       ['2023-Q3', 'A', 1]
     ], columns=['Date', 'Type', 'Count'])

# we explicity order the data
# Note that now the 2022-Q1 is in between 2021-Q4 and 2022-Q2
df = df.sort_values('Date', key=lambda e: e.replace('Q',''))

# Now the x-axis and the broken chronology, i.e., 2022-Q1 at the end
fg = px.bar(df, x="Date", y="Count", color="Type", barmode="group")
fg.show()

我期望的行为是,应用

df
后,x 轴保持与
sort_values
相同的顺序。相反,具有空数据的行被放置在最后,不再按时间顺序排列。我怎样才能覆盖这种行为?

python pandas plotly plotly-express
1个回答
1
投票

可以更新布局以指定类别顺序:

fg.update_layout(xaxis={'categoryorder':'category ascending'})

输出:

请参阅此页面以获取有关如何处理排序或有序类别的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.