簡體   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