1. ホーム
  2. python

[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。

2022-03-17 21:25:32

質問

その場でプロットを生成するクイック&ダーティなスクリプトを書いています。以下のコードを使用しています。 Matplotlib のドキュメントを参照)を出発点としています。

from pylab import figure, axes, pie, title, show

# Make a square figure and axes
figure(1, figsize=(6, 6))
ax = axes([0.1, 0.1, 0.8, 0.8])

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15, 30, 45, 10]

explode = (0, 0.05, 0, 0)
pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
title('Raining Hogs and Dogs', bbox={'facecolor': '0.8', 'pad': 5})

show()  # Actually, don't show, just save to foo.png

プロットをGUIで表示するのではなく、プロットをファイル(例えばfoo.png)に保存して、例えばバッチスクリプトで使用できるようにしたいのですが。どうしたらいいですか?

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

質問に対する回答は終わりましたが、ここでは matplotlib.pyplot.savefig . ファイル形式は、拡張子で指定することができます。

from matplotlib import pyplot as plt

plt.savefig('foo.png')
plt.savefig('foo.pdf')

それぞれラスタライズされた出力とベクタライズされた出力が得られますが、どちらも便利なものです。さらに、画像の周囲にはしばしば望ましくない空白が存在しますが、これを除去することができます。

plt.savefig('foo.png', bbox_inches='tight')

プロットを表示する場合に注意してください。 plt.show() に続く必要があります。 plt.savefig() そうでない場合、ファイルイメージは空白になります。