#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))