[英]Removing gaps between data on a Plotly graph
我试图制作一个图表来绘制股票价格的时间序列数据。 然而,市场仅在 9:30-16:00 开放,但图表会自动绘制市场未开放的时间。 这导致数据点之间的图表上有大线,这在我附上的图片中应该更明显。 如果有人可以帮助解决这个问题,我将不胜感激。
import pandas as pd
import datetime as dt
import yfinance as yf
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.show()
如果您将 nans 插入到 dataframe 中,其中存在很长的时间间隔,这可能会给出您想要的结果。
import pandas as pd
import datetime as dt
import yfinance as yf
import plotly.graph_objects as go
import numpy as np
#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')
# Specify minimum time gap in nanoseconds.
TIME_GAP = 60000000000
# get an index array where there is a time gap
gap_idx = np.where(np.diff(df.index.astype(int)) > TIME_GAP)[0]
df = df.reset_index()
# use numpy to insert nans
df = pd.DataFrame(
columns = df.columns,
data = np.insert(df.values, gap_idx+1, values=np.nan, axis=0)
)
df = df.set_index('Datetime')
#Make Graph
fig = go.Figure()
fig.add_trace(go.Scatter(
x=df.index,
y=df['Adj Close'],
mode='lines'))
fig.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.