python PR

【matplotlib入門⑦】グラフをpng・pdfで保存しよう!

記事内に商品プロモーションを含む場合があります

前回までの講座で、一通りmatplotlibを使って各種グラフを作成出来るようになったと思います。

そこで次にやりたくなるのが作成したグラフの保存ですね!

実際の現場では、作成したグラフを自分しか見ないという事はないでしょう。
誰かに見せるためにも画像は保存して、資料などに添付することが多いです。

そのため今回の講座では以下の点について解説します。

  • 作成したグラフを保存する方法
  • pdf・pngの違い
  • 画像サイズの変更方法

どれも重要な内容のためしっかりと学んでいきましょう。

 

pngとpdfのどちらで保存するべきか?

matplotlibで画像を保存する際に、主に使われるのはpngかpdfだと思います。
ではこの2つの違いは何なのでしょうか?
それぞれのメリデメを簡単に解説します。

pngとは?

PNG(Portable Network Graphics)の主な特長としては以下の点があります。

  • 保存や編集を繰り返しても画質の劣化が全くない
  • 透明はもちろん半透明機能も使える
  • 色や要素が少ないとファイルサイズを小さくしやすい
  • Webに適している

 

pdfとは?

pdfの特長としては以下の点があります。

  • pngほどではないが、画質は十分きれい
  • 可逆圧縮を使用して画像を保存するため、ファイルサイズが小さくなる
  • ビューワーが無いと見れない
  • 印刷に適している

 

pngとpdfどちらを使うべき?

悩んだらpngで保存しておけば間違いないです。
私もほとんどpngでしか使いません。
印刷することもほほとんどありませんし、もししたとしても、A4くらいでしたら違いは分かりません。
私の環境では資料はweb上で作成することがほとんどなので、ほぼpngしか使っている人はいません。

ただ複数のグラフを作成し、一つのファイルで管理したいといった場合はpdfでのみ対応することができます。

 

グラフをpngで保存する

では実際にグラフをpngで保存する方法を見ていきましょう!
個人的にも簡単なので1番使う方法です。

savefig()関数で保存

まず画像で保存するにはsavefig関数を使います。
使い方としては下記のように使います。

  • plt.savefig(‘ファイル名(path)’, dpi, bbox_inches, transparent)

引数としては、まずファイル名(path)の指定は必須ですので指定しましょう。
その他の引数の意味としては下記になります。

  • dpi:オプションで画像の解像度を指定できます。
  • bbox_inches:オプションで保存する領域を指定できます。
  • transparent:オプションで背景を透明にすることができます。

 

では実際に保存してみましょう!
1000個のランダムな値を生成し、それをヒストグラムにした画像を保存しましょう。

上記のコードを実行する事で、作成したグラフをカレントディレクトリに保存する事ができます。

作業環境はgoogle coraboratoryですが、無事sample_graphファイルが作成されました。
中身を見てみると、

無事グラフが保存されていました。
この時大事なポイントとしてはファイル名の拡張子を必ず「png」とすることです。
‘sample_grapht.png’と記載したように、最後の部分をpngとすることでpng形式で保存ができます。

 

savefig()の引数について

つづいてsavefigに引数について詳細を見ていきましょう。

dpi

まずdpiです。これは保存する画像の解像度を指定できます。
デフォルト値は100ですので、もっと小さくても大丈夫という場合には小さくしましょう。

例えば10とする場合には下記のようにします。

かなり小さくなりましたねw
まぁ基本的にはデフォルト値のままで大丈夫だと思いますので、そこまで使う機会は多くは無いと思います。

bbox_inches

bbox_inchesでは保存する領域を指定できます。
この引数には、以下の3つの値を指定できます。

  • tight:グラフ描画領域の境界線に合わせた最小限の領域が保存されます。グラフ要素の余白が自動的に除去されます。
  • none:Figure全体の領域が保存されます。グラフ要素と余白を含めたすべての領域が保存されます。
  • 値を直接指定: (left, bottom, right, top)で直接指定もできます。インチ単位での指定となります。「bbox_inches=(0.2, 0.3, 0.8, 0.7)」のように指定します。

比較的使うのはtightですね!
余白を省いて画像をスッキリさせてくれます。

少しですが、余白が無くなりスッキリしました!

 

transparent

transparentでは背景を透明にする事もできます。
資料上でグラフを重ねて表示(あるかは分かりませんが、、)する時に使えますねw

 

 

グラフをpdfで保存する

続いてpdf形式でファイル保存する方法を見ていきましょう。
色々な方法がありますが、一番簡単な方法はplt.savefigのformat指定で設定することができます。

formatの指定方法

pdfの指定方法は非常に簡単です。
下記のように指定するだけです。

format指定を’pdf’とし、ファイル名(path)の拡張子をpdfとするだけです。
これでサクッとpdf形式でファイル保存をする事ができます。

 

まとめ

いかがでしたでしょうか!
今回は以下の事を学びました。

  • pngとpdfの違い
  • savefig()でpng/pdfで保存する方法
  • savefig()の主要な引数

基本的な使い方はシンプルなのですぐに覚えられると思いますし、引数については完璧に覚える必要はありません。
実際に使う際にググったりチートシートを見たり、自分のノートを見ながら書ければ問題ありません!
私も細かい点は覚えておらず、ほぼ過去のコードをコピーするかチートシートを見ながら書いています!

まずは拡張子にだけ気を配っていきましょうw

 

 

Work illustrations by Storyset

あなたにおススメの記事