Постройте гистограмму и линейный график на одном рисунке

Здравствуйте, я пытаюсь построить гистограмму и линейный график на одном и том же рисунке, чтобы создать график MACD. Однако данные гистограммы необходимо уменьшить, чтобы они не перекрывали линии. Есть ли способ уменьшить масштаб гистограммы без масштабирования данных в моем фрейме данных? введите здесь описание изображения

t.head()

            Date    macd    macds   macdh
index               
0   2020-03-02  0.000000    0.000000    0.000000
1   2020-02-28  0.005048    0.002804    0.002244
2   2020-02-27  -0.000080   0.001622    -0.001702
3   2020-02-26  0.016184    0.006555    0.009629
4   2020-02-25  0.023089    0.011473    0.011615



fig = go.Figure()
fig.add_trace(go.Histogram(
            x=t['Date'],
            y=t['macdh'],

           ))

fig.add_trace(go.Scatter(
            x=t['Date'],
            y=t['macd'],

            line_color='dimgray',
            opacity=0.8))

fig.add_trace(go.Scatter(
            x=t['Date'],
            y=t['macds'],
            line_color='deepskyblue',
            opacity=0.8
            ))

fig.show()

person bryan    schedule 06.03.2020    source источник


Ответы (1)


Чтобы абсолютно быть уверенным, что разные категории данных не мешают друг другу, я предпочитаю настраивать их с отдельными подзаголовками, а не с графиками со смесью вторичных осей Y. Вот пример:

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

Полный код:

import plotly.graph_objects as go
import plotly.io as pio
from plotly.subplots import make_subplots
import pandas as pd

pio.templates.default = "plotly_white"
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')

fig = make_subplots(vertical_spacing = 0, rows=3, cols=1, row_heights=[0.6, 0.2, 0.2])

fig.add_trace(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=df['Date'], y = df['mavg']), row=2, col=1)
fig.add_trace(go.Scatter(x=df['Date'], y = df['mavg']*1.1), row=2, col=1)
fig.add_trace(go.Bar(x=df['Date'], y = df['AAPL.Volume']), row=3, col=1)

fig.update_layout(xaxis_rangeslider_visible=False,
                  xaxis=dict(zerolinecolor='black', showticklabels=False),
                  xaxis2=dict(showticklabels=False))

fig.update_xaxes(showline=True, linewidth=1, linecolor='black', mirror=False)

fig.show()
person vestland    schedule 10.06.2020