1. ホーム
  2. python

matplotlib でサブプロットを保存する

2023-11-08 21:42:57

質問

matplotlibの図の中の個々のサブプロットを(pngに)保存することは可能でしょうか?例えば、私が

import pyplot.matplotlib as plt
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)
ax1.plot([1,2,3],[4,5,6])    
ax2.plot([3,4,5],[7,8,9])

つのサブプロットをそれぞれ別のファイルに保存するか、せめて新しい図に別々にコピーして保存することは可能でしょうか?

私はRHEL 5上でmatplotlibのバージョン1.0.0を使用しています。

どのように解決するのですか?

Eli 氏の言う通り、通常はあまり必要ありませんが、可能な場合もあります。 savefigbbox_inches 引数を取り、図の一部分だけを選択的に画像として保存するために使用します。

以下に簡単な例を示します。

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# Make an example plot with two subplots...
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(range(10), 'b-')

ax2 = fig.add_subplot(2,1,2)
ax2.plot(range(20), 'r^')

# Save the full figure...
fig.savefig('full_figure.png')

# Save just the portion _inside_ the second axis's boundaries
extent = ax2.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
fig.savefig('ax2_figure.png', bbox_inches=extent)

# Pad the saved area by 10% in the x-direction and 20% in the y-direction
fig.savefig('ax2_figure_expanded.png', bbox_inches=extent.expanded(1.1, 1.2))


完全な図です。


エリア 内側 は、2番目のサブプロットです。


X方向に10%、Y方向に20%パッドされた2番目のサブプロット周辺の領域。