1. ホーム
  2. python

[解決済み] GridSpec()` を `subplots()` と共に使用する方法

2022-02-16 15:34:59

質問

いくつかある( を使用する方法について説明したSOの記事です。 GridSpec をサブプロット全般で使用することができます。 私が達成しようとしているのは、無駄なことですが GridSpecsubplots このように、実際の配列とリストのインデックスをループで制御されたインデックスに置き換えることができるのです。

gs = gridspec.GridSpec(4, 1, height_ratios=[2, 2, 1, 1])        
tPlot, axes = plt.subplots(4, sharex=True, sharey=False)
tPlot.suptitle(node, fontsize=20)
axes[0].plot(targetDay[0], gs[0])
axes[1].plot(targetDay[1], gs[1])
axes[2].scatter(targetDay[2], gs[2])
axes[3].plot(targetDay[3], gs[3])

もちろん、このコードが動作しないことは言うまでもありません。

解決するには?

を呼び出すのではなく gridspec.GridSpec の前に subplots を送信することができます。 kwargs から GridSpec の中から subplots の呼び出しで gridspec_kw 引数で指定します。から ドキュメント :

gridspec_kw : ディクショナリ

サブプロットが配置されるグリッドを作成するために使用される GridSpec コンストラクタに渡されるキーワードを持つディクショナリ。

そこで、例えば

import matplotlib.pyplot as plt

tPlot, axes = plt.subplots(
        nrows=4, ncols=1, sharex=True, sharey=False, 
        gridspec_kw={'height_ratios':[2,2,1,1]}
        )

tPlot.suptitle('node', fontsize=20)

axes[0].plot(range(10),'ro-') 
axes[1].plot(range(10),'bo-') 
axes[2].plot(range(10),'go-') 
axes[3].plot(range(10),'mo-') 

plt.show()