1. ホーム
  2. python

[解決済み] matplotlib で多数のサブプロットでサブプロットサイズ/スペーシングを改善する

2022-03-22 15:34:06

質問

と非常によく似ています。 この質問 しかし、私の図は必要なだけ大きくすることができるという違いがあります。

matplotlibで縦に積み重ねたプロットを大量に生成する必要があります。その結果は figsave を使って保存され、ウェブページで閲覧されます。したがって、サブプロットが重ならないように間隔を空けてあれば、最終的な画像の高さは気になりません。

図形の大きさをいくら大きくしても、サブプロットが重なってしまうのです。

現在、私のコードは次のようになっています。

import matplotlib.pyplot as plt
import my_other_module

titles, x_lists, y_lists = my_other_module.get_data()

fig = plt.figure(figsize=(10,60))
for i, y_list in enumerate(y_lists):
    plt.subplot(len(titles), 1, i)
    plt.xlabel("Some X label")
    plt.ylabel("Some Y label")
    plt.title(titles[i])
    plt.plot(x_lists[i],y_list)
fig.savefig('out.png', dpi=100)

解決方法は?

を使ってみてください。 plt.tight_layout

簡単な例として

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=4, ncols=4)
fig.tight_layout() # Or equivalently,  "plt.tight_layout()"

plt.show()


タイトなレイアウトのない場合


タイトなレイアウトで