0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Matplotlibでグラフを画像ファイルとして保存する方法〜初心者向けMatplotlib講座 #10〜

0
Posted at

グラフを表示するだけでなく、レポートや論文に使うために画像として保存したい場面もありますよね。今回はグラフを画像ファイルとして保存する方法を見ていきましょう。

前回の記事はこちら(リンク)

目次

  1. グラフを保存するには
  2. 保存できるファイル形式
  3. よく使うオプション
  4. 完成形:全部まとめて書く

グラフを保存するには

グラフを保存するにはfig.savefig()を使います。

fig.savefig("ファイル名.png")

plt.show()の前に書くのがポイントです。plt.show()を呼んだ後はFigureの中身がリセットされてしまうため、後に書くと空のファイルが保存されてしまいます。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
ax.set_title("sin(x)")

fig.savefig("sin_graph.png")  # ← plt.show()の前に書く
plt.show()

実行すると、Pythonファイルと同じフォルダにsin_graph.pngが保存されます。

保存できるファイル形式

拡張子を変えるだけで異なる形式で保存できます。

形式 拡張子 使いどころ
PNG .png 汎用的。透過背景にも対応
PDF .pdf 論文・レポートに。拡大しても劣化しない
SVG .svg Web用。拡大しても劣化しない
JPEG .jpg ファイルサイズを小さくしたいとき

論文やレポートに使う場合はPDFかSVGがおすすめです。画像を拡大しても劣化しないため、印刷にも適しています。

fig.savefig("sin_graph.pdf")  # PDF形式で保存
fig.savefig("sin_graph.svg")  # SVG形式で保存

よく使うオプション

解像度を指定する(dpi)

dpi(dots per inch)で解像度を指定できます。数値が大きいほど高解像度になりますが、ファイルサイズも大きくなります。

fig.savefig("sin_graph.png", dpi=300)
dpi 用途
72 Web表示(デフォルト)
150 通常の印刷
300 高品質な印刷・論文

余白を調整する(bbox_inches)

デフォルトの設定では、軸ラベルやタイトルが切れてしまう場合があります。bbox_inches="tight"を指定するとグラフ全体がぴったり収まるように余白を自動調整してくれます。

fig.savefig("sin_graph.png", bbox_inches="tight")

基本的には毎回つけておくのがおすすめです。

背景を透明にする(transparent)

transparent=Trueを指定すると背景が透明になります。Webサイトやプレゼンのスライドにグラフをのせるときに便利です。

fig.savefig("sin_graph.png", transparent=True)

※ 透過に対応しているのはPNGとSVGのみです。JPEGは透過に対応していないので注意してください。

完成形:全部まとめて書く

import matplotlib.pyplot as plt
import numpy as np

# ① FigureとAxesを作る
fig, ax = plt.subplots()

# ② データ作成
x = np.linspace(0, 10, 100)
y = np.sin(x)

# ③ プロット・装飾
ax.plot(x, y, color="blue")
ax.set_title("sin(x)")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.grid(True, linestyle="--", linewidth=0.5)

# ④ 保存(plt.show()の前に書く)
fig.savefig("sin_graph.png", dpi=300, bbox_inches="tight")

# ⑤ 表示
plt.show()

今回使ったオプションを整理するとこうなります:

オプション 役割 おすすめの値
dpi 解像度を指定する 300(高品質)
bbox_inches 余白を自動調整する "tight"
transparent 背景を透明にする True

まとめ

  • グラフの保存はfig.savefig()を使う
  • plt.show()の前に書くのを忘れずに
  • 拡張子を変えるだけでPNG・PDF・SVGなど形式を選べる
  • dpi=300bbox_inches="tight"はセットで使うのがおすすめ
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?