Como integrar subcharts em um eixo matplotlib?
Olhando para a saída do backtrader , posso ver que parece haver um recurso no matplotlib para integrar vários subgráficos em um único gráfico:
A mostra imagem de tela uma figura - aparentemente sem qualquer subtramas matplotlib - que tem três sub-gráficos ( broker, trades, price data).
Eu sei como criar subtramas com matplotlib - mas não é isso que estou procurando.
Gostaria de saber como se pode criar em um eixo (este é o termo matplotlib certo?) Vários subgráficos que compartilham o mesmo eixo x.
Respostas
Você pode fazer o que a imagem mostra definindo as height_ratiossubtramas.
vários subcharts que compartilham o mesmo eixo x.
Você pode consultar matplotlib.pyplot.subplots sobre sharexesharey
Quando as subparcelas têm um eixo x compartilhado ao longo de uma coluna, apenas os rótulos de escala x da subparcela inferior são criados.
Da mesma forma, quando os subplots têm um eixo y compartilhado ao longo de uma linha, apenas os rótulos de escala y do primeiro subplot da coluna são criados.
import matplotlib.pyplot as plt
fig, axs = plt.subplots(3, 1, sharex='col',
gridspec_kw={'width_ratios': [1], 'height_ratios': [2, 2, 10],
'hspace': 0, 'wspace': 0})
# avoid overlay
axs[1].set_yticks([0, 0.5, 1])
axs[1].set_yticklabels(["", "0.5", ""])
plt.show()
Se você estiver interessado em como fazer anotações nos rótulos, pode ler esta resposta .
Existe uma excelente biblioteca para visualização de ações, etc. Originalmente incluída no matplotlib, mas agora uma biblioteca independente, darei uma resposta simplificada ao exemplo no Github. A fórmula pode ser encontrada aqui .
import pandas as pd
import mplfinance as mpf
idf = pd.read_csv('data/SPY_20110701_20120630_Bollinger.csv', index_col=0, parse_dates=True)
df = idf.loc['2011-07-01':'2011-12-30',:]
mpf.plot(df, volume=True, tight_layout=True, figscale=0.75, style='checkers')