绘制日期时间长达数年,但在xaxis上仅显示12个月

2024-04-25 15:15:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图以datetime为x轴绘制数据。这些数据是几年来收集的。 我可以将日期转换为日期时间格式,提取日期时间的年份部分,并使用该部分作为颜色进行打印

df['Date']=pd.to_datetime(df['Date'],errors='coerce') 
df['year']=df['Date'].dt.year 
df['mthday']=df['Date'].dt.strftime('%d-%b') 
df=df.sort_values(by='Date') 
plot=px.line(df,x='Date',y='value',color='year')

(我在这个链接上尝试了解决方案:Plotly: How to plot just month and day on x axis? (Ignore year)

这给了我下面的图表。不同的年份以不同的颜色正确显示。然而,x轴的跨度从2014年到2020年。我希望x轴只显示一月到十二月,不同年份的图表叠加在这张图上。(又名:从1月到12月,将x轴缩短/折叠为一组月)
Output graph with several years on x-axis

编辑以添加来自df的样本:

    Date/   value/value2/value3/Note/Unnamed/year/mthday
187 2015-11-10  125 73  79.0    NaN NaN 2015    10-Nov
108 2015-01-25  132 88  61.0    NaN NaN 2015    25-Jan
85  2014-12-25  138 86  69.0    NaN NaN 2014    25-Dec
154 2015-07-24  131 80  62.0    NaN NaN 2015    24-Jul
226 2016-09-18  120 73  61.0    NaN NaN 2016    18-Sep
261 2018-06-07  135 72  64.0    NaN NaN 2018    07-Jun
59  2014-11-20  158 79  70.0    NaN NaN 2014    20-Nov
118 2015-02-12  145 77  70.0    NaN NaN 2015    12-Feb
287 2019-09-02  130 79  66.0    NaN NaN 2019    02-Sep
228 2016-09-26  104 76  59.0    NaN NaN 2016    26-Sep

(实际上,对于图表,我希望绘制所有年份的值、值2、值3。在本例中,我只尝试了所有年份的值)

第二次编辑获取可能的答案: 嗨,我想我已经找到了一个方法。我使用mthday列并将其转换回datetime。它将年份值默认为1900。然后,我使用mthday作为x轴,年份作为颜色绘制此图。然后在x轴标记中隐藏年份值

df['mthday']=pd.to_datetime(df['mthday'],format='%d-%b',errors='coerce')
fig=px.line(df,x='mthday',y='value',color='year')
fig.update_layout(xaxis_tickformat='%d-%b')

如果您有更好的方法来完成此任务,请告诉我


Tags: to数据dfdatetimedatevalue颜色图表
1条回答
网友
1楼 · 发布于 2024-04-25 15:15:24

以下是我发现的一种方法: 我使用mthday列并将其转换回datetime类型。这会将所有行的所有年份值设置为默认值1900。然后,我使用mthday作为x轴,并通过指定x轴记号来隐藏年份

df['mthday']=df['Date'].dt.strftime('%d-%b')
df['mthday']=pd.to_datetime(df['mthday'],format='%d-%b',errors='coerce')
df=df.sort_values(by='Date') 
plot=px.line(df,x='mthday',y='value',color='year')
plot.update_layout(xaxis_tickformat='%d-%b')

Plot with 12 months shown on x-axis

相关问题 更多 >