我有一些数据,其中包括年季度格式的日期。
对数据框进行排序效果很好,但是在绘制数据时,
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
相同的顺序。相反,具有空数据的行被放置在最后,不再按时间顺序排列。我怎样才能覆盖这种行为?
可以更新布局以指定类别顺序:
fg.update_layout(xaxis={'categoryorder':'category ascending'})
输出:
请参阅此页面以获取有关如何处理排序或有序类别的更多信息。