Самый безопасный подход - запустить регрессию на сериализованном представлении ваших дат, а затем настроить ось x для отображения в виде строк. Под сериализованным представлением я подразумеваю, например, подход, предложенный Ben.T в его комментарии, или тот, который используется в Plot best fit line with plotly . Затем вы можете настроить макет оси x, используя:
fig.update_xaxes(tickangle=45,
tickmode = 'array',
tickvals = df_tips['date'][0::40],
ticktext= [d.strftime('%Y-%m-%d') for d in datelist[0::40]])
Часть df_tips['date'][0::40]
гарантирует, что между каждой отметкой есть некоторое пространство.
График 1:
Этот подход даже хорошо работает, если вы хотите использовать другие измерения вашего набора данных, например: fig = px.scatter(df_tips,x='date',y='tip', color = 'sex', trendline='ols')
:
Участок 2:
Полный код:
import plotly.express as px
import pandas as pd
from datetime import datetime
df_tips = px.data.tips()
df_tips['date'] = df_tips.index
datelist = pd.date_range(datetime.today(), periods=df_tips.shape[0]).tolist()
fig = px.scatter(df_tips,x='date',y='tip', trendline='ols')
fig = px.scatter(df_tips,x='date',y='tip', color = 'sex', trendline='ols')
fig.update_xaxes(tickangle=45,
tickmode = 'array',
tickvals = df_tips['date'][0::40],
ticktext= [d.strftime('%Y-%m-%d') for d in datelist])
fig.show()