Wie integriere ich Subcharts in eine Matplotlib-Achse?

Aug 20 2020

Wenn ich mir die Ausgabe von Backtrader ansehe , kann ich sehen, dass es in matplotlib eine Funktion zu geben scheint, mit der mehrere Unterdiagramme in ein einziges Diagramm integriert werden können:

(siehe auch https://www.backtrader.com/docu/plotting/plotting/ )

Der Screenshot zeigt eine Figur - scheinbar ohne matplotlib Nebenhandlungen - die drei Sub - Charts hat ( broker, trades, price data).

Ich weiß, wie man mit matplotlib Nebenhandlungen erstellt - aber das ist nicht das, wonach ich suche.

Ich würde gerne wissen, wie man in einer Achse (ist dies der richtige Matplotlib-Begriff?) Mehrere Unterdiagramme erstellen kann, die dieselbe x-Achse haben.

Antworten

2 Ynjxsjmh Aug 21 2020 at 06:46

Sie können das tun, was das Bild zeigt, indem Sie die height_ratiosUntergrundstücke definieren.

mehrere Unterdiagramme, die dieselbe x-Achse haben.

Sie können auf matplotlib.pyplot.subplots über sharexund verweisensharey

Wenn Unterzeichnungen eine gemeinsame x-Achse entlang einer Spalte haben, werden nur die x-Häkchen-Beschriftungen der unteren Unterzeichnung erstellt.

Wenn Unterzeichnungen eine gemeinsame y-Achse entlang einer Zeile haben, werden in ähnlicher Weise nur die y-Häkchenbeschriftungen der Unterzeichnung der ersten Spalte erstellt.

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

Wenn Sie daran interessiert sind, wie Sie y-Labels mit Anmerkungen versehen können, können Sie sich diese Antwort ansehen .

1 r-beginners Aug 21 2020 at 08:08

Es gibt eine ausgezeichnete Bibliothek zur Visualisierung von Beständen usw. Ursprünglich in matplotlib enthalten, aber jetzt eine unabhängige Bibliothek, werde ich eine vereinfachte Antwort auf das Beispiel auf Github geben. Die Formel finden Sie hier .

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