Как интегрировать поддиаграммы в одну ось matplotlib?

Aug 20 2020

Глядя на вывод backtrader , я вижу, что, похоже, в matplotlib есть функция для интеграции нескольких поддиаграмм в один график:

(смотрите также https://www.backtrader.com/docu/plotting/plotting/ )

На скриншоте одна фигура - по- видимому , без каких - либо Matplotlib подзаговорами - что есть три subcharts ( broker, trades, price data).

Я знаю, как создавать подзаговоры с помощью matplotlib, но это не то, что я ищу.

Я хотел бы знать, как можно создать на одной оси (это правильный термин matplotlib?) Несколько поддиаграмм, которые имеют одну и ту же ось x.

Ответы

2 Ynjxsjmh Aug 21 2020 at 06:46

Вы можете делать то, что показано на рисунке, определяя height_ratiosсреди подзаголовков.

несколько поддиаграмм с одной и той же осью x.

Вы можете обратиться к matplotlib.pyplot.subplots о sharexиsharey

Когда подзаголовки имеют общую ось x вдоль столбца, создаются только метки x-деления нижнего подзаголовка.

Точно так же, когда подзаголовки имеют общую ось Y вдоль строки, создаются только метки y-деления первого подзаголовка столбца.

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

Если вам интересно, как аннотировать метки y, вы можете посмотреть мой ответ .

1 r-beginners Aug 21 2020 at 08:08

Есть отличная библиотека для визуализации запасов и т. Д. Изначально входила в matplotlib, но теперь это независимая библиотека, я дам упрощенный ответ на пример на Github. Формулу можно найти здесь .

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