巧妙地使用 Rangebreaks 的问题

Problems using Rangebreaks plotly

我正在使用 Plotly 制作时间序列图,但是 x 轴的标签太多。我做了一些研究,我认为我可以使用 Rangebreaks 来帮助解决这个问题,但我不确定。理想情况下,我希望 x 轴标签更少。我将在下面公开我的代码。

import pandas as pd
import yfinance as yf
import datetime as dt
import plotly.graph_objects as go

#Initial data & get dataframe 
start = dt.date(2022,3,1)
end = dt.date(2022,3,7)
ticker = 'SPY'
df = yf.download(ticker,start,end,progress=False,interval='1m')
#Make Graph
fig = go.Figure()
fig.add_trace(go.Scatter(
    x=df.index,
    y=df['Adj Close'],
    mode='lines'))
fig.update_layout(xaxis={'type':'category'})
fig.show()

图表如下所示:

我确实更改了我的代码中的 x 轴类型,但这样做是有原因的,以防止我的图形在其中有很大的间隙,如下所示:

  • 查看数据,交易从下午 4 点到 9:30am
  • 关闭
  • 这个可以简单排除:
fig.update_xaxes(
    rangebreaks=[
        dict(bounds=[16, 9.5], pattern="hour"),  # hide hours from 4pm to 9:30am
    ]
)

完整代码

import pandas as pd
import yfinance as yf
import datetime as dt
import plotly.graph_objects as go

# Initial data & get dataframe
start = dt.date(2022, 3, 1)
end = dt.date(2022, 3, 7)
ticker = "SPY"
df = yf.download(ticker, start, end, progress=False, interval="1m")
# Make Graph
fig = go.Figure()
fig.add_trace(go.Scatter(x=df.index, y=df["Adj Close"], mode="lines"))
# fig.update_layout(xaxis={'type':'category'})
fig.update_xaxes(
    rangebreaks=[
        dict(bounds=[16, 9.5], pattern="hour"),  # hide hours from 4pm to 9:30am
    ]
)

输出