図に 2 つのサブプロットを追加する必要があります。1 つのサブプロットの幅は、2 番目のサブプロットの幅の約 3 倍 (同じ高さ) にする必要があります。私はGridSpec
とcolspan
引数を使用してこれを実現しましたが、 PDF に保存できるように を使用してこれを実行したいと思いますfigure
。コンストラクターの 引数を使用して最初の図を調整できますfigsize
が、2 番目のプロットのサイズを変更するにはどうすればよいでしょうか。
ベストアンサー1
- の時点で
matplotlib 3.6.0
、およびwidth_ratios
はheight_ratios
キーワード引数として直接渡すことができるようになりました。plt.subplots
そしてsubplot_mosaic
、に従ってMatplotlib 3.6.0 の新機能 (2022 年 9 月 15 日)。
f, (a0, a1) = plt.subplots(1, 2, width_ratios=[3, 1])
f, (a0, a1, a2) = plt.subplots(3, 1, height_ratios=[1, 1, 3])
- もう一つの方法は、
subplots
関数を使用して幅の比率を渡すことです。gridspec_kw
- matplotlib チュートリアル: GridSpec やその他の関数を使用して図のレイアウトをカスタマイズする
matplotlib.gridspec.GridSpec
gridspect_kw
利用可能なオプションがあります
import numpy as np
import matplotlib.pyplot as plt
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
f, (a0, a1) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [3, 1]})
a0.plot(x, y)
a1.plot(y, x)
f.tight_layout()
f.savefig('grid_figure.pdf')
- 質問は標準的なものなので、垂直のサブプロットの例を次に示します。
# plot it
f, (a0, a1, a2) = plt.subplots(3, 1, gridspec_kw={'height_ratios': [1, 1, 3]})
a0.plot(x, y)
a1.plot(x, y)
a2.plot(x, y)
f.tight_layout()