PythonのMatplotlibは、機械学習やディープラーニングをする上で欠かせないグラフ描画ライブラリの代表格です。
ただ、Matplotlibは複雑なので、細かく理解しようとするとかなりの時間がかかります。そのため、これでこういうことができるんだ~というレベルの理解で十分で、基本はコピペで問題ないかと思います。
Matplotlibのライブラリの基本的な使い方についてご紹介しますので、ぜひ参考にして使ってみて下さい。
この記事の他に、NumpyやPandasについてもまとめていますので、よろしければご確認下さい。
Matplotlibとは
Matplotlibについて、公式では以下のように説明がされています。
Matplotlib は、Python で静的、アニメーション、インタラクティブな視覚化を作成するための包括的なライブラリです。Matplotlib は、簡単なことを簡単に、難しいことを可能にします。
・出版物のような品質のプロットを作成する。
https://matplotlib.org/
・ズーム、パン、アップデートが可能なインタラクティブな図を作成する。
・ビジュアルスタイルとレイアウトをカスタマイズする
・多くのファイルフォーマットに書き出す
・JupyterLabやグラフィカルユーザインタフェースに埋め込む
・Matplotlibをベースにした豊富なサードパーティパッケージを利用する。
翻訳しているので少し変な日本語ですが、Matplotlibを使うと簡単に可視化できまっせ~てことが書いてますね。
ちなみにライブラリとは、プログラミングで使える機能が詰まった「部品箱」のようなものです。わざわざ、必要な機能を自分でプログラムするのは大変ですが、既に用意されたライブラリを使うことで、必要な機能を簡単に使うことができます。
Matplotlibを使う準備
それではMatplotlibを使うために、Matplotlibのインストールとインポートについてご紹介します。
Matplotlibのインストール
pip install matplotlib
Matplotlibのインポート
%matplotlib inline
import matplotlib.pyplot as plt
%matplotlib inline
て何のために必要なの?
と思われる方も多いと思いますが、以下のような意味があります。
- グラフがアウトプット行に出力される
plt.show()
を省略してもグラフが出力されるplt.show()
で2つ以上のグラフを表示することができる
グラフを見やすくするために必要なんだな~ぐらいに思っておけばで大丈夫です。
Matplotlibの日本語化
pip install japanize_matplotlib
import japanize_matplotlib
Matplotlibは日本語を使うと文字化けしてしまうため、日本語化したい場合は上記を実施して下さい。日本語化するやり方は幾つかありますが、これが一番簡単です。
データの準備
グラフを表示するデータを準備します。ここではグラフで表示するための適当なデータを用意しています。基本的にはこのデータを使って可視化していきます。
x = np.arange(-10, 10, 0.1) #-10から10まで0.1区切りで配列を作る
y = np.sin(x) #配列xの値に対してそれぞれsin(x)をnumpyより求めてy軸の配列を生成
Matplotlibのグラフ操作
グラフの表示
plt.plot(x,y) # plot関数の第一引数はx軸、第二引数はy軸
plt.show()
plt.plot()
は、デフォルトで折れ線グラフを作成します。plt.plot()
の引数を指定することでグラフの色や形を変えることができます。
plt.plot(x,y,color="red", marker="*", markersize=8) # colorで色指定、markerの"*"で★印のマーカー追加、markersizeでマーカーの大きさ指定
plt.show()
グラフタイトル表示
plt.title()
でグラフにタイトルを記載することができます。
plt.title("sine graph", size = 30, color = "Blue")
plt.plot(x, y)
plt.show()
X軸、Y軸の範囲、ラベルを設定
plt.xlabel()
plt.ylabel()
で、ラベルを追加することができます。plt.xlim()
plt.ylim()
でx軸、y軸の範囲を設定することができます。
plt.plot(x, y)
plt.xlabel("X-value") # x軸ラベルの設定
plt.ylabel("Y-value") # y軸ラベルの設定
plt.xlim(0,10) # x軸の範囲(最小、最大)を設定
plt.ylim(-1.5, 1.5) # y軸の範囲(最小、最大)を設定
plt.grid() # グリッド線を追加
plt.show()
凡例の追加
グラフに凡例を追加させるには、以下を実行します。
- プロット時にラベル名を指定する:
plt.plot(x, y, label='label_name')
- 凡例を表示する:
plt.legend()
plt.plot(x, y, label="sin(x)")
plt.legend()
plt.show()
凡例の位置を変更したい場合
凡例の位置を変更したい場合は、plt.legend()
の引数を指定することで可能です。
plt.plot(x, y, label="sine")
plt.legend(loc='upper right') #upper leftだと左上、lower rightだと右下
plt.show()
凡例をグラフの外に出したい場合は次の通りです。
plt.plot(x, y, label="sine")
plt.legend(loc='upper left', bbox_to_anchor=(1, 1)) #bbox_to_anchor=(1, 0)だと右下に表示されます
plt.show()
グラフの大きさ変更
ply.figure()でグラフの大きさを指定することができます。
plt.figure(figsize=(16,4))
plt.plot(x,y)
plt.show()
複数のグラフの表示
plt.plot()
を繰り返して実行すると、1つのグラフの中に複数の曲線を追加することができます。
x = np.arange(-10, 10, 0.1) #-10から10まで0.1区切りで配列を作る
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label="sin")
plt.plot(x, y2, label="cos")
plt.legend()
plt.show()