Pythonではnumpyやscipyといったライブラリを使うことで科学計算を簡単に行うことができますが、そういった計算結果をグラフなどで図表できると分かりやすいですよね。そんな時に便利なのがmatplotlibというライブラリです。matplotlibを使えばPythonでデータをグラフにプロットできるようになります。numpy、scipyと組み合わせることで、Pythonだけでデータの読み込み・加工・計算、そしてプロットが行えます。
今回はmatplotlibの基本的な使い方について説明します。
matplotlibのインストール
numpy・scipyのインストール
matplotlibはnumpyおよびscipyと組み合わせることが多いです。絶対ではありませんが、もし必要な場合は先にnumpyおよびscipyをインストールしておきましょう。
matplotlibをインストール
matplotlibをインストールします。matplotlibはpipコマンドでインストールすることができます。
pip install matplotlib
もしくはmatplotlibのページからファイルをダウンロードし、ダウンロードしたファイルをpipコマンドでインストールしてください。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
pipコマンド
pip install さきほどダウンロードしたファイルのパス
matplotlibにもnumpyやscipyと同じくいくつかのバージョンがあるので、自分のpythonやOSにあったバージョンをダウンロードしてください。
例えば「matplotlib-2.0.0-cp36-cp36m-win_amd64.whl」というファイルはpython3.6、64ビットのWindows向けとなっています。
matplotlibを使う
グラフを描画する
matplotlibのインストールが終わったら、さっそくグラフを表示してみます。グラフの表示にはmatplotlib.pyplotモジュールのplot()およびshow()を使用します。
from matplotlib import pyplot pyplot.plot(x軸, y軸) pyplot.show()
plot()の引数にはシーケンス(numpy配列やリスト)を渡します。最初の引数がx軸、2つ目の引数がy軸を表します。plot()でデータをプロットし、show()で実際に画面に表示します。
import math import numpy as np from matplotlib import pyplot pi = math.pi #mathモジュールのπを利用 x = np.linspace(0, 2*pi, 100) #0から2πまでの範囲を100分割したnumpy配列 y = np.sin(x) pyplot.plot(x, y) pyplot.show()
実行結果
この例では三角関数のsinをnumpyで計算し、その結果をmatplotlibで表示しています。数字で見るよりも視覚的で理解しやすいです。
グラフの設定
plot()およびshow()でグラフの表示ができましたが、このグラフには情報がほとんどありません。今回の例はsinの有名なグラフなので分かる人はすぐ分かりますが、通常はタイトルや軸名、凡例などを設定してそのグラフが何を表しているかを示す必要があります。
matplotlibならグラフの設定も簡単に行えます。
~ここまでは上記の例と同じなので省略~
#凡例のためにlabelキーワードで凡例名をつける pyplot.plot(x, y, label='sin') #グラフタイトル pyplot.title('Sin Graph') #グラフの軸 pyplot.xlabel('X-Axis') pyplot.ylabel('Y-Axis') #グラフの凡例 pyplot.legend() pyplot.show()
実行結果
この例ではさきほどのsinのグラフにタイトル、軸名、凡例をつけました。凡例をつける際にはplot()のlabelキーワードで凡例名をつけるのを忘れないようにしましょう。グラフの設定はこのほかにも線の色や線種の変更など、さまざまなことができます。
複数のグラフを表示
さきほどの例ではsinのグラフだけを表示していましたが、plot()でデータを追加することで複数のデータを表示できます。
pi = math.pi x = np.linspace(0, 2*pi, 100) sin_y = np.sin(x) cos_y = np.cos(x) #新たにcosを計算 pyplot.plot(x, sin_y, label='sin') pyplot.plot(x, cos_y, label='cos') #cosの値をプロット #グラフタイトル pyplot.title('Sin And Cos Graph') #グラフの軸 pyplot.xlabel('X-Axis') pyplot.ylabel('Y-Axis') #グラフの凡例 pyplot.legend() pyplot.show()
実行結果
この例では先ほどまでのsinに加えてcosのグラフも表示しています。2つのグラフを同時に表示することができました。なお、複数のグラフを表示するときはlabelキーワードとlegendを使って凡例を表示するのを忘れないようにしましょう。
【おすすめ記事】
➡Pythonを学びたい方は必見!おすすめスクールまとめ5選
➡【無料で使える】Pythonを勉強できる学習サイト7つ
➡Pythonの本・参考書の評判
➡【Python入門】if 文での真偽判定の仕方(TrueとNone)
➡【Python入門】モジュールを扱う際に重要な「if __name__ == ‘__main__’:」とは?