由第三个变量着色,用 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']
我绘制了变量 Counts
与 Year_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']
将下划线更改为连字符)来解决此问题,这确实会按预期识别为有效日期和绘图:
我有一个如下所示的数据框。
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']
我绘制了变量 Counts
与 Year_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']
将下划线更改为连字符)来解决此问题,这确实会按预期识别为有效日期和绘图: