¿Cómo integrar subgráficos en un eje matplotlib?
Al observar la salida de backtrader , puedo ver que parece haber una característica en matplotlib para integrar varios subgráficos en un solo gráfico:

La captura de pantalla muestra una figura - aparentemente sin ningún subtramas matplotlib - que tiene tres subgráficos ( broker
, trades
, price data
).
Sé cómo crear subtramas con matplotlib, pero esto no es lo que estoy buscando.
Me gustaría saber cómo se pueden crear en uno de los ejes (¿es este el término de matplotlib correcto?) Varios subgráficos que comparten el mismo eje x.
Respuestas
Puede hacer lo que muestra la imagen definiendo height_ratios
entre las subtramas.
varios subgráficos que comparten el mismo eje x.
Puede consultar matplotlib.pyplot.subplots sobre sharex
ysharey
Cuando las subtramas tienen un eje x compartido a lo largo de una columna, solo se crean las etiquetas de marca x de la subparcela inferior.
De manera similar, cuando las subparcelas tienen un eje y compartido a lo largo de una fila, solo se crean las etiquetas de marca y de la primera subparcela de la columna.
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()

Si está interesado en cómo anotar etiquetas y, puede ver mi respuesta .
Hay una biblioteca excelente para la visualización de acciones, etc. Originalmente incluida en matplotlib, pero ahora una biblioteca independiente, daré una respuesta simplificada al ejemplo de Github. La fórmula se puede encontrar aquí .
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')
