Matplotlib で表示されている図と同じ図を保存する方法
Suraj Joshi
2021年7月18日
図を 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()
出力:
保存された図:
この処理により、表示されている図と同じ 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()
出力:
保存された図:
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn