はじめに
matplotlibでグラフを保存する際には、savefig()メソッドを使用します。保存形式とdpi(dots per inch)設定は、出力品質と用途に大きく影響します。本記事では、PNG、PDF、SVG、EPS形式の特徴と、用途別の最適なdpi設定について解説します。また、ファイルサイズの最適化やベクター形式の活用、実践的なベストプラクティスまで、高品質なグラフ出力のためのガイドを提供します。
主な保存形式の比較
形式 | 特徴 | 用途 | 推奨dpi |
---|---|---|---|
PNG | 可逆圧縮、透過対応 | Web表示、プレゼンテーション | 100-150 |
ベクター形式、拡大しても劣化なし | 論文、印刷物 | 300以上 | |
SVG | ベクター形式、編集可能 | Webグラフィック、デザイン編集 | – |
JPEG | 非可逆圧縮、ファイルサイズ小 | 写真的なグラフ(非推奨) | 100-150 |
EPS | ベクター形式、LaTeX互換 | 学術論文、出版 | 300以上 |
基本的な保存方法
モジュールのインポート
バージョン
基本的な保存方法


dpi設定の最適化ガイドライン
用途別推奨dpi
- 画面表示・Web用: 72-100 dpi
- 画面解像度は通常72-96dpiのため、これ以上は不要
- ファイルサイズを抑えられる
- プレゼンテーション: 150 dpi
- プロジェクター投影に十分な品質
- 印刷物・論文: 300-600 dpi
- 印刷品質を確保
- 雑誌・ジャーナル投稿の標準
- 高品質印刷: 600 dpi以上
- ポスター、書籍など
- ファイルサイズが大きくなる点に注意
最適化のための詳細設定
このコードは、matplotlibでPNG形式のグラフを保存する際に、高品質な出力を得るための詳細な設定を行っています:
各パラメータの説明
dpi=300
: 解像度を300 dpiに設定。印刷物や論文に適した高品質な設定ですbbox_inches='tight'
: グラフの周りの余白を自動的に最小化し、必要な部分だけを含めますpad_inches=0.1
:bbox_inches='tight'
使用時に、グラフの周りに0.1インチのパディング(余白)を追加しますfacecolor='white'
: グラフの背景色を白に設定しますedgecolor='none'
: グラフの外枠の色を無しに設定しますtransparent=False
: 背景を不透明にします(透過させない)format='png'
: 保存形式をPNGであることを明示的に指定します
この設定は、印刷物や論文など、高品質な出力が必要な場合に特に有用です。

ベクター形式の活用
論文や出版物には、PDFやSVGなどのベクター形式が推奨されます。拡大しても画質が劣化せず、テキストも編集可能です。
このコードは、matplotlibで作成したグラフを3つの異なるベクター形式で保存する方法を示しています:
plt.savefig('graph.pdf', format='pdf', bbox_inches='tight')
- PDF形式で保存。論文や印刷物に最適で、拡大しても画質が劣化しません
format='pdf'
で形式を明示的に指定bbox_inches='tight'
で余白を自動的に最小化
plt.savefig('graph.svg', format='svg', bbox_inches='tight')
- SVG形式で保存。Webグラフィックやデザイン編集に適しており、編集可能なベクター形式です
- Inkscape, Illustratorなどのグラフィックソフトでさらに編集可能
plt.savefig('graph.eps', format='eps', bbox_inches='tight')
- EPS形式で保存。LaTeX互換で、学術論文や出版物に使用されます
- 多くのジャーナルで受け入れられる形式
これらのベクター形式は、ラスター形式(PNGなど)と異なり、拡大しても画質が劣化しないという利点があります。用途に応じて適切な形式を選択できます。
ファイルサイズの最適化
PNG形式の最適化
このコードは、matplotlibでPNG形式のグラフを保存する際に、ファイルサイズを最適化するための設定を行っています:
dpi=150
: 解像度を150 dpiに設定。プレゼンテーションや画面表示に適した品質bbox_inches='tight'
: グラフの余白を自動的に最小化し、見栄えを改善pil_kwargs={'optimize': True, 'quality': 95}
: PIL(Python Imaging Library)のオプションを指定optimize=True
: PNG圧縮を最適化してファイルサイズを削減quality=95
: 画質を95%に設定(高品質を維持しつつファイルサイズを抑える)
この設定により、高品質を保ちながらもファイルサイズを効率的に抑えたPNGファイルが生成されます。

実践的なベストプラクティス
- デフォルト設定の変更:
plt.rcParams['savefig.dpi'] = 300
で全体のデフォルトdpiを設定 - 透過背景: プレゼンテーション用には
transparent=True
が便利 - bbox_inches=’tight’: 余白を自動調整して見栄えを改善
- 形式の選択: 編集可能性が必要ならSVG、印刷ならPDF、Webなら適切なdpiのPNG
設定の一括管理
# matplotlibrc設定ファイルでデフォルトを変更
import matplotlib as mpl
# プログラム内で設定
mpl.rcParams['savefig.dpi'] = 300
mpl.rcParams['savefig.format'] = 'pdf'
mpl.rcParams['savefig.bbox'] = 'tight'
mpl.rcParams['savefig.pad_inches'] = 0.1
matplotlibでグラフを保存する際のデフォルト設定を一括で変更することもできます。
基本構造
import matplotlib as mpl
: matplotlibのコアモジュールをインポートmpl.rcParams
: matplotlibの設定パラメータを格納する辞書
各設定の詳細
mpl.rcParams['savefig.dpi'] = 300
- すべての
savefig()
呼び出しでデフォルトの解像度を300 dpiに設定 - 個別に
dpi
を指定しない場合、この値が使用されます
- すべての
mpl.rcParams['savefig.format'] = 'pdf'
- デフォルトの保存形式をPDFに設定
- ファイル名に拡張子がない場合、この形式が使用されます
mpl.rcParams['savefig.bbox'] = 'tight'
- デフォルトで余白を自動的に最小化
bbox_inches='tight'
と同じ効果
mpl.rcParams['savefig.pad_inches'] = 0.1
- グラフの周りに追加するパディング(余白)を0.1インチに設定
bbox='tight'
と組み合わせて使用されます
利点
- 複数のグラフを保存する際、毎回同じパラメータを指定する必要がなくなります
- プロジェクト全体で一貫した品質の出力が得られます
- コードの冗長性が減り、可読性が向上します
トラブルシューティング
- Q: 保存したPNGがぼやけて見える
- A: dpiを上げてください(300以上推奨)。また、
bbox_inches='tight'
を使用すると余白が調整され、より鮮明に見えます。
- A: dpiを上げてください(300以上推奨)。また、
- Q: PDF保存でフォントが埋め込まれない
- A:
plt.rcParams['pdf.fonttype'] = 42
を設定すると、TrueTypeフォントとして埋め込まれます。
- A:
まとめ
グ本記事では、matplotlibでグラフを保存する際の形式選択とdpi設定について詳しく解説しました。適切な保存形式とdpi設定を行うことで、用途に応じた最適な品質のグラフを出力できます。
形式選択のポイント
EPS形式:学術論文や出版物に適しており、LaTeXとの互換性が高い形式です
PNG形式:Web表示やプレゼンテーションに最適。dpi 100-150で十分な品質が得られ、ファイルサイズも適度に抑えられます
PDF形式:論文や印刷物に最適。ベクター形式のため拡大しても画質が劣化せず、高品質な出力が可能です
SVG形式:編集可能性を重視する場合に最適。Illustratorなどのグラフィックソフトで後から編集できます
コメント