由第三个变量着色,用 plotly.express 弄乱了日期轴的顺序

colored by a third variable mess up the order of date axis with plotly.express

我有一个如下所示的数据框。

import plotly.express as px
import pandas as pd
dfm = pd.DataFrame({'Year':['2017','2017','2017','2017','2018','2018','2018','2018'],
                    'Month':['01', '04', '10', '12', '01', '04', '10', '12'],
                    'Counts':[12, 33, 9, 45, 11, 54, 22, 13],
                    'Region': ['A', 'B', 'A', 'A', 'B', 'B', 'A', 'B']})
dfm['Year_Month'] = dfm['Year']+'_'+dfm['Month']

我绘制了变量 CountsYear_Month。一切看起来都很正常。

fig = px.line(dfm, x="Year_Month", y="Counts")
fig.update_traces(mode='markers+lines')

然而,当我尝试用第三个变量给线条着色时,Region 在这种情况下,Year_Month 轴完全搞砸了。

fig = px.line(dfm, x="Year_Month", y="Counts", color='Region')
fig.update_traces(mode='markers+lines')

有谁知道为什么?我该如何解决这个问题?

我相信这是因为您使用的是 non-standard 日期格式 yyyy_mm,该格式无法识别为日期,而是分类日期,因此使用的规则与您预期的不同缺少时间序列数据。

您可以通过将日期格式更改为 yyyy-mm(通过 dfm['Year_Month'] = dfm['Year']+'-'+dfm['Month'] 将下划线更改为连字符)来解决此问题,这确实会按预期识别为有效日期和绘图: