繁体   English   中英

消除 Plotly 图上数据之间的差距

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM