#plotly
#сюжетно
Вопрос:
Вот код:
import plotly.graph_objects as go import pandas as pd from datetime import datetime # build complete timepline from start date to end date dt_all = pd.date_range(start=raw_bn1['Date'].iloc[0],end=raw_bn1['Date'].iloc[-1]) # retrieve the dates that ARE in the original datset dt_obs = [d.strftime("%Y-%m-%d") for d in pd.to_datetime(raw_bn1['Date'])] # define dates with missing values dt_breaks = [d for d in dt_all.strftime("%Y-%m-%d").tolist() if not d in dt_obs] fig = go.Figure(data=[go.Candlestick(x=raw_bn1['Date'], open=raw_bn1['Open'], high=raw_bn1['High'], low=raw_bn1['Low'], close=raw_bn1['Close'])]) fig.update_layout(xaxis_rangeslider_visible=False) fig.update_xaxes(rangebreaks=[dict(values=dt_breaks)]) fig.show()
По этому я получаю график свечей. Теперь я хотел бы соединить 2 даты ( например, 1 декабря 2020 года и 13 августа 2021 года) «Высокой» прямой линией. Как это сделать ?
Ответ №1:
Сегменты линий были добавлены с использованием данных свечей из официального справочника. С добавлением линейного графика установите ось x на дату начала, дату окончания, а ось y-на цену на дату начала и цену на дату окончания в списке.
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv') fig = go.Figure(data=[go.Candlestick(x=df['Date'], open=df['AAPL.Open'], high=df['AAPL.High'], low=df['AAPL.Low'], close=df['AAPL.Close']) ]) fig.add_trace(go.Scatter(x=['2016-11-02','2017-01-26'], y=[111,125], mode='lines', name='trend line', line=dict(color='blue'))) fig.update_layout(xaxis_rangeslider_visible=False) fig.show()