Pythonでデータ分析をする際にグラフなどの可視化でよく利用されるmatplotlibの基本的な使用方法について解説します。
Contents
matplotlibによるデータの可視化
データ分析では、対象データや解析した結果を可視化したいといったことが必ずと言っていいほど発生します。pythonのデータ可視化のパッケージとして有名なものがmatplotlibです。
pythonでのデータ分析では、numpy、pandas、matplotlib、scikit-learnがセットで出てくることが多いかと思います(他にも有用なパッケージは沢山あります)。データの可視化手法としてmatplotlibの使い方を覚えていくことは有効です。
本記事では、matplotlibのインストールと基本的な使い方について紹介します。
matplotlibの公式ドキュメントはこちらを参考にしてください。
matplotlibのインストール
matplotlibを使用するためにはパッケージのインストールが必要です。matplotlibがインストールされていない場合は、以下のpipコマンドを使って環境のインストールを行ってください。
pip install matplotlib
上記を実行してインストールすればmatplotlibを使用する準備はできます。以降では、matplotlibを使った簡単なデータの可視化について解説します。
matplotlibの基本的な使い方
matplotlibのインポート
matplotlibを使用するには、まずmatplotlibをimportします。matplotlibを使用する場合は、インポートする際にmplやpltのような省略形として使うのが一般的となっています。
import matplotlib as mpl import matplotlib.pyplot as plt
以降で紹介するコードは上記のようにimportがされていることを前提とします。
スタイルの設定
matplotlibには、色々な描画スタイルを設定することができます。スタイルの設定をするにはuseメソッドを使用します。
以下は'classic'スタイルに設定する場合の設定方法です。この設定をすることでグラフの表示スタイルを変更することができます。
plt.style.use('classic')
特にこの設定をしなくてもmatplotlibは利用できますが、自分の目的に沿ったスタイルを設定して表示できることを覚えておくとよいでしょう。
また、使用できるスタイルを確認するには以下のようにstyle.availableを表示すること確認できます。なお、以下の例はprint関数を使用していますが、IPythonのコンソールやJupyter Notebookを使用している場合は、シンプルに「plt.style.available」を実行するだけで確認ができます。
print(plt.style.available)
【実行結果例】 ['Solarize_Light2', '_classic_test_patch', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark', 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10']
matplotlibでの描画方法
Pythonスクリプトで描画する場合
Pythonのスクリプト内でmatplotlibを用いた描画をする場合には、以下の例のように使用します。
"""一般的なmatplotlibの使い方 """ import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10, 100) plt.plot(x, np.sin(x)) plt.plot(x, np.cos(x)) plt.show()

上記の例では、numpyのlinspaceで横軸であるxのデータを作成し、sin(x)およびcos(x)を表示しています。
スクリプトで実際に画面描画する場合には、showメソッドを実行する必要があります。「plt.show()」というコマンドを忘れずに記述するようにしましょう。
IPythonのコンソールで描画する場合
IPythonのコンソールで実行する場合には以下のように「%matplotlib」というマジックコマンドを使用することでmatplotlibの描画をすることができます。実行している内容は上記の例と同じsin(x), cos(x)の描画です。

IPythonで実行する場合には、plotのたびにFigureに追記されていきます。
【plt.plot(x, np.sin(x))の実行後】

【plt.plot(x, np.cos(x))の実行後】

IPythonやマジックコマンドの概要についてご存じない方は以下も参考にしてください。
Jupyter Notebookで描画する場合
numpyやpandas等を利用する多くの方が実行環境としてJupyter Notebookをしているかと思います。Jupyter Notebookでのプロットはとても簡単です。
Jupyter Notebookでインラインで画像を表示するためには「%matplotlib inline」というマジックコマンドを含めます。これにより、インラインで画像化したグラフを埋め込んで表示してくれます。 実行している内容は上記の例と同じsin(x), cos(x)の描画です。

Jupyter Notebookの基本的な使用方法を確認したい場合は以下も参考にしてください。
描画したグラフを画像として保存する方法
スクリプトから画像として保存する場合には以下のように「savefig」メソッドを使用します。
メソッドを使用するために「fig = plt.figure()」というコードでFigureクラスのインスタンスを用意している点が上記の例とは違います。
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10, 100) fig = plt.figure() plt.plot(x, np.sin(x)) plt.plot(x, np.cos(x)) fig.savefig('temp.png') plt.show()
なお、保存する画像の種類はファイル名の拡張子から自動で判別して保存してくれます。使用している環境で使用できる拡張子は以下で確認することができます。
print(fig.canvas.get_supported_filetypes())
{'eps': 'Encapsulated Postscript', 'jpg': 'Joint Photographic Experts Group', 'jpeg': 'Joint Photographic Experts Group', 'pdf': 'Portable Document Format', 'pgf': 'PGF code for LaTeX', 'png': 'Portable Network Graphics', 'ps': 'Postscript', 'raw': 'Raw RGBA bitmap', 'rgba': 'Raw RGBA bitmap', 'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics', 'tif': 'Tagged Image File Format', 'tiff': 'Tagged Image File Format'}
IPythonのコンソールやJupyter Notebookを使用している場合は、シンプルに「fig.canvas.get_supported_filetypes()」を実行するだけで確認することができます。
また、もちろんですが表示されているFigureの保存ボタンからファイル名を指定して保存することも可能です。

上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。