サブチャートを1つのmatplotlib軸に統合する方法は?

Aug 20 2020

バックトレーダーの出力を見ると、matplotlibには、複数のサブチャートを1つのプロットに統合する機能があるようです。

(も参照してください https://www.backtrader.com/docu/plotting/plotting/ )

スクリーンショットショー一桁-明らかに任意のmatplotlibののサブプロットなし- 3つのサブチャートを持っています(brokertradesprice data)。

私はmatplotlibでサブプロットを作成する方法を知っていますが、これは私が探しているものではありません。

同じx軸を共有するいくつかのサブチャートを1つの軸(これは正しいmatplotlib用語ですか?)で作成する方法を知りたいです。

回答

2 Ynjxsjmh Aug 21 2020 at 06:46

height_ratiosサブプロット間を定義することで、図が示すことを実行できます。

同じx軸を共有するいくつかのサブチャート。

とについてmatplotlib.pyplot.subplotsを参照できますsharexsharey

サブプロットが列に沿って共有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')