Matplotlib で表示されている図と同じ図を保存する方法

Suraj Joshi 2021年7月18日
Matplotlib で表示されている図と同じ図を保存する方法

図を matplotlib.pyplot.savefig() で保存する際には、テキストの相対的な大きさと線のストロークの幅を指定するために、dpi というパラメータを指定します。デフォルトでは、matplotlib.pyplot.show()dpi の値は 80 であり、matplotlib.pyplot.savefig()dpi の値は 100 です。
show() メソッドと savefig() メソッドで図形が同じに見えるようにするには、savefig() メソッドで dpi=fig.dpi を使用する必要があります。また、matplotlib.pyplot.figure())メソッドで figsize パラメータを設定することで、両方の図が同じになるようにプロットの絶対寸法を調整することができます。

savefig() メソッドで dpi=fig.dpi を指定すると、表示されている図形と同じ図形を保存する

import matplotlib.pyplot as plt

x = [1, 3, 4, 5, 8]
y = [3, 1, 5, 4, 9]

fig = plt.figure()
plt.plot(x, y)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("X vs Y")
fig.savefig("plot.png", dpi=fig.dpi)
plt.show()

出力:

表示された図と同一の図を保存 Matplotlib

保存された図:

保存された図:表示されている図と同じ図を保存する Matplotlib

この処理により、表示されている図と同じ plot.png という名前で保存されます。

時々、作成された図形の境界線が大きくなってしまうことがあります。これを解決するには、matplotlib.pyplot.tight_layout() メソッドを使用するか、savefig() メソッドで bbox_inches='tight' を設定します。

import matplotlib.pyplot as plt

x = [1, 3, 4, 5, 8]
y = [3, 1, 5, 4, 9]

fig = plt.figure()
plt.plot(x, y)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("X vs Y")
fig.savefig("plot.png", dpi=fig.dpi, bbox_inches="tight")
plt.show()

出力:

表示された図の保存図は、表示された図と同じです

保存された図:

保存された図:表示されている図と同じ図を保存する Matplotlib

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Matplotlib Images