Python 情节:使用fig.update_xaxes显示错误的月份

Python 情节:使用fig.update_xaxes显示错误的月份,python,plotly,Python,Plotly,我正在寻找一个解决方案,以显示x_轴正确。日期2021-01-31显示为“2021年2月”。我想把它显示为“2021年1月”。谢谢你的帮助 sdate = date(2021,1,31) edate = date(2021,8,30) date_range = pd.date_range(sdate,edate-timedelta(days=1),freq='m') df_test = pd.DataFrame({ 'Datum': date_range}) df_test['values

我正在寻找一个解决方案,以显示x_轴正确。日期2021-01-31显示为“2021年2月”。我想把它显示为“2021年1月”。谢谢你的帮助


sdate = date(2021,1,31) 
edate = date(2021,8,30) 
date_range = pd.date_range(sdate,edate-timedelta(days=1),freq='m')
df_test = pd.DataFrame({ 'Datum': date_range})
df_test['values'] = 10

fig = px.line(df_test, x=df_test['Datum'], y=df_test['values'])
fig.layout = go.Layout(yaxis=dict(tickformat=".0%"))
fig.update_xaxes(dtick="M1", tickformat="%b %Y")
fig.update_layout(width=1485, height=1100)

plotly.io.write_image(fig, file='test_line.png', format='png')

通过将起始刻度设置为数据的起始日期,可以强制刻度从2021-01-31开始

from datetime import date, timedelta
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px

sdate = date(2021,1,31) 
edate = date(2021,8,30) 
date_range = pd.date_range(sdate,edate-timedelta(days=1),freq='m')
df_test = pd.DataFrame({ 'Datum': date_range})
df_test['values'] = 10

fig = px.line(df_test, x=df_test['Datum'], y=df_test['values'])
fig.layout = go.Layout(yaxis=dict(tickformat=".0%"))
fig.update_xaxes(dtick="M1", tickformat="%b %Y")

## set tick0 to the starting date 
fig.update_layout(
    xaxis=dict(tick0=sdate), 
    width=1485, height=1100
)
fig.show()

我应该指出,该图可能会产生误导,因为我相信大多数人会将每个记号解释为从月初开始(例如,大多数人会认为数据始于
2021-01-01
),如果您不以记号格式指定日期,但这取决于你想在图表上显示什么

如果您改为通过重写行
fig.update_xaxes(dtick=“M1”,tickformat=“%b%d%Y”)
来更改tickformat,则会得到以下曲线图: