Сюжетно — добавить строку из указанной свечи

#pandas #plotly

Вопрос:

Я пытаюсь добавить горизонтальные линии, начинающиеся с candleOfInterest (‘2020-03-21’).

Я могу добавить, используя fig.add_hline(y=orh) , но как мне установить значение x, начинающееся candleOfInterest и заканчивающееся на «2020-03-31»?

введите описание изображения здесь

Код

 import pandas as pd
import numpy as np
import plotly.graph_objects as go

def genMockDataFrame(days,startPrice,colName,startDate,seed=None): 
   
    periods = days*24
    np.random.seed(seed)
    steps = np.random.normal(loc=0, scale=0.0018, size=periods)
    steps[0]=0
    P = startPrice np.cumsum(steps)
    P = [round(i,4) for i in P]

    fxDF = pd.DataFrame({ 
        'ticker':np.repeat( [colName], periods ),
        'date':np.tile( pd.date_range(startDate, periods=periods, freq='H'), 1 ),
        'price':(P)})
    fxDF.index = pd.to_datetime(fxDF.date)
    fxDF = fxDF.price.resample('D').ohlc()
    fxDF.columns = [i.title() for i in fxDF.columns]
    return fxDF


df = genMockDataFrame(15,1.1904,'eurusd','19/3/2020',seed=157)


candleOfInterest = '2020-03-21'

#open range high and low
orh = df.loc[candleOfInterest]["High"]
orl = df.loc[candleOfInterest]["Low"]

fig = go.Figure(data=[go.Candlestick(x=df.index,

                open=df['Open'],
                high=df['High'],
                low=df['Low'],
                close=df['Close'])])

fig.add_hline(y=orh)
fig.add_hline(y=orl)


fig.show()
 

Ответ №1:

Вы можете использовать go.Scatter между начальной и конечной точкой каждого сегмента горизонтальной линии с аргументами mode='lines' и showlegend=False в зависимости от того, хотите ли вы, чтобы эти аннотации отображались в легенде или нет.

 fig.add_trace(go.Scatter(x=[candleOfInterest, '2020-03-31'], y=[orh]*2, mode='lines', line=dict(color='black'), showlegend=False))
fig.add_trace(go.Scatter(x=[candleOfInterest, '2020-03-31'], y=[orl]*2, mode='lines', line=dict(color='black'), showlegend=False))
 

Выход:
введите описание изображения здесь