This is an old revision of the document!
Table of Contents
概要
plt.show()で表示したプロットは、ウィンドウの上にあるフロッピーのアイコンから保存できますが、スクリプトから直接保存することもできます。
plt.savefig
plt.savefigを使うとファイルに直接出力できます。
import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y = np.sin(x) plt.plot(x, y) plt.savefig("sin.png") # プロットしたグラフをファイルsin.pngに保存する plt.show()
保存できる形式
以下のファイルに出力することが出来ます。
- emf
- eps
- jpeg
- jpg
- pdf
- png
- ps
- raw
- rgba
- svg
- svgz
- tif
- tiff
ファイルの種類は拡張子により自動判別されますが、formatにより明示することも可能です。 またラスター形式の画像の場合、dpiにより解像度を指定することも可能です。
例えばpng形式で解像度をDPI=300としたい場合
plt.savefig("sin.png", format="png", dpi=300)
とします。
CUI環境
グラフをパソコンの画面に表示するには、(1)ウィンドウを開いて(2)グラフの画像を生成する、という手順が必要です。
(1)と(2)の両方を行うソフトを対話型バックエンド(interactive backend)、(2)のみの機能を持つソフトを非対話型バックエンド(non-interactive backend)いいます。
GUIでLinuxのターミナルを開いてmatplotlibを使っている場合は問題ありませんが、CUI環境で使っているときやSSHでサーバに接続して作業しているときなどに対話型バックエンドが使えずエラーがでます。
このような場合、png形式でグラフをプロットする際は、matplotlib.pyplotをインポートする前に非対話型バックエンドとしてAGGを指定します。
import matplotlib matplotlib.use("AGG") import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y = np.sin(x) plt.plot(x, y) plt.savefig("sin.png")
非対話型バックエンドでは当然plt.showが使えません。
他の非対話型バックエンドについては、以下を参照のこと(大文字、小文字は区別されません)。
Renderer | Filetypes | Description |
---|---|---|
AGG | png | raster graphics – high quality images using the Anti-Grain Geometry engine |
PS | ps eps | vector graphics – Postscript output |
vector graphics – Portable Document Format | ||
SVG | svg | vector graphics – Scalable Vector Graphics |
Cairo | png ps pdf svg … | vector graphics – Cairo graphics |
GDK | png jpg tiff … | raster graphics – the Gimp Drawing Kit Deprecated in 2.0 |
https://matplotlib.org/faq/usage_faq.html#what-is-a-backend より引用
なお、デフォルトのバックエンドは matplotlibrc で確認できます。
- Anaconda3でインストールした場合は /path/to/anaconda3/lib/python3.6/site-package/matplotlib/mpl-data/ にあります。対話型バックエンド qt5agg がデフォルトになっています。