Matplotlib は、Python で最も広く使われているデータ可視化ライブラリの 1 つです。
Matplotlib のプロットや可視化は、論文やオンラインを通じて、一般的に他の人と共有されています。
この記事では、Matplotlib を使ってプロットやグラフを画像ファイルとして保存する方法について見ていきます。
プロットの作成
まず、簡単なプロットを作ってみましょう。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
ここでは、0
から始まり10
で終わる正弦関数を 0.1
のステップでプロットしています。
このコードを実行すると、次のようになります。
さて、この図を画像として保存する方法を見てみましょう。
Matplotlib でプロットを画像として保存する
前の例では、 plot()
関数によって、可視化したいデータを渡してプロットを生成しました。
このプロットは生成されましたが、 show()
関数を呼び出さない限り、私たちには表示されません。
show()`関数は、その名前が示すように、生成されたプロットをユーザーにウィンドウで表示します。
一度生成された図/プロットは、 savefig()
関数を用いてファイルとして保存することもできます。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('saved_figure.png')
さて、このコードを実行すると、プロットを表示するウィンドウが現れる代わりに、プロジェクトのディレクトリにファイル(saved_figure.png
)が生成されます。
このファイルには、ウィンドウに表示される画像と全く同じものが含まれています。
注意すべきは、 savefig()
関数は plt
インスタンスに固有のものではないことです。
この関数は Figure
オブジェクトに対しても使用することができます。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
fig.savefig('saved_figure.png')
savefig()関数には、必須の
filename` 引数があります。
ここでは、ファイル名とフォーマットを指定しています。
さらに、dpi
, transparent
, bbox_inches
, quality
などのオプションも指定することができます。
この後のセクションで、よく使われるオプションについて説明します。
画像のDPIを設定する
DPIパラメータは、1インチあたりのドット数(ピクセル数)を定義します。
これは基本的に、作成する画像の解像度を意味します。
いくつかのオプションを試してみましょう。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
fig.savefig('saved_figure-50pi.png', dpi = 50)
fig.savefig('saved_figure-100dpi.png', dpi = 100)
fig.savefig('saved_figure-1000dpi.png', dpi = 1000)
この結果、ローカルマシンに3つの新しい画像ファイルが作成され、それぞれ異なるDPIを持つことになります。
デフォルトの値は100
です。
Matplotlibで透明な画像を保存する
引数 transparent
を用いると、背景が透明なグラフを作成することができます。
これは、プロット画像をプレゼンテーションや論文で使ったり、カスタムデザインの設定で提示したりしたい場合に便利です。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('saved_figure.png', transparent=True)
この画像を暗い背景に置くと、次のようになります。
プロットのカラーを変更する
facecolor引数を使用すると、顔の色を変更することができる。
この引数にはcolorを指定することができ、デフォルトでは
white` になっている。
ここでは、red
に変更してみましょう。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('saved_figure-colored.png', facecolor = 'red')
この結果は
画像の枠を設定する
bbox_inches引数には文字列を指定し、プロットするボックスの境界線を指定することができます。
もし、tightに設定したい場合、つまり、可能な限りボックスの周りをトリミングしたい場合は、
bbox_inches引数を
‘tight’` に設定することができます。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('saved_figure-tight.png', bbox_inches = 'tight', facecolor='red')
この結果、箱がぎっしりと詰まった状態になります。
これは、参考のために顔の部分を別の色にすると、視覚的にわかりやすくなります。
結論
このチュートリアルでは、Matplotlib を使ってプロットを画像ファイルとして保存するいくつかの方法について説明しました。
もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonでのデータ可視化に関する書籍の束をチェックしてみてください。
Pythonによるデータ可視化
期間限定割引。
30日間返金保証付き
初級から上級まで
定期的に無料で更新(最新更新は2021年4月)
ボーナスリソースやガイドを更新
Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使用して、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリの上級作業の強力な基盤を構築できるように設計された書籍です。
本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要があることすべてを教えてくれる、詳細なガイドです。
Pythonによるデータ可視化」は、Pythonの初級~中級開発者向けの書籍で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornなどのコアなプロットライブラリを取り上げ、Altairなどの宣言型ライブラリや実験的ライブラリを活用する方法について案内しています。
具体的には、11章にわたって、9つのPythonライブラリを取り上げています。
Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。
データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。