前回の記事では、matplotlibを使った散布図の作図について触れました。今回の記事では、グラフの見た目のカスタマイズ方法や散布図以外の描画方法について簡単に解説を行います。
matplotlibのおさらいと詳しい解説
matplotlibの概要
matplotlibはpythonの描画モジュールの一種です。様々なグラフを手軽にカスタムして描画可能なため、データの分析の際に重宝する場面が多いです。前回の記事では、最も単純な1つのグラフの描画の仕方を説明しましたが、今回はより詳しくmatplotlibの機能を解説します。
matplotlibは2つのインターフェース(やり方のことだと思ってください)があります。それぞれpyplotとaxesと呼びますが、シンプルなグラフはpyplot、グラフの見た目を細かくカスタムしたいときはaxesを使う、くらいで覚えておけばOKです。
シンプルに描画したい: pyplot
pyplotの公式のチュートリアルはリンク先を参照ください。前回の記事でも解説したように、pyplotを使うと非常にシンプルに描画可能です。例えば、散布図を描くコードと実行結果のグラフは以下になります。
# matplotlibのインポート。描画用のデータを作るためにnumpyもインポート
import matplotlib.pyplot as plt
import numpy as np
#xとyに使うデータを適当に設定する。
x = np.arange(0, 10)
y = np.arange(5, 15)
# 横軸x、縦軸yで描画する
plt.scatter(x, y)
#x軸とy軸のラベルを付ける。
plt.xlabel('x')
plt.ylabel('y')
#プロットを表示する
plt.show()

複数のデータを乗せたいときや見た目をカスタムしたグラフを作りたい: axes
axesの公式チュートリアルはリンク先を御覧ください。axesはpyplotよりも整った見た目のグラフを描きやすいため、報告資料用のグラフはaxesの使い勝手が良いです。早速ですが、下にaxesを使った散布図の描画を紹介します。
# matplorlibのインポート。描画用のデータを作るためにnumpyもインポート
import matplotlib.pyplot as plt
import numpy as np
#xとyに使うデータを適当に設定する。
x1 = np.arange(0, 10)
x2 = np.arange(0, 20, 2)
x3 = np.arange(0, 30, 3)
y1 = np.arange(0, 10)
y2 = np.arange(0, 40, 4)
y3 = np.arange(0, 120, 12)
# まずはグラフを描くためのキャンパスに当たる、subplotを用意。figsizeでキャンパスの横と縦のサイズを決める。
fig, ax = plt.subplots(figsize=(8, 12))
#3つの使って散布図を描く。()内に、x, y, 色, マーカーの形の順で入力
ax.scatter(x1, y1, label='1st', color='blue', marker='o')
ax.scatter(x2, y2, label='2nd', color='red', marker='s')
ax.scatter(x3, y3, label='3rd', color='green', marker='^')
#x軸とy軸のラベルを付ける。フォントサイズは20
plt.xlabel('x_label', fontsize=20)
plt.ylabel('y_label', fontsize=20)
#x軸の見た目をいじる。今回は色とフォントのサイズ
for label in ax.xaxis.get_ticklabels():
label.set_color('red')
label.set_fontsize(20)
#x軸の見た目をいじる。今回は色とフォントのサイズ
for label in ax.yaxis.get_ticklabels():
label.set_color('red')
label.set_fontsize(20)
#タイトルをつける
ax.set_title('Scatter Plot Example')
# 凡例を表示
ax.legend(fontsize=20)
#プロットを表示する
plt.show()

axesでグラフを作成することで、自由度の高い描画を理解しやすいコードで実行できることがわかります。テンプレートを作っておくことで、ルーティン的なグラフづくりに困ることがなくなる点もよいです。
よく使うグラフの描き方: ヒストグラムから円グラフまで
今回は散布図(scatter)を使って描画の方法を解説しました。pyplotとaxesは
- ヒストグラム(hist)
- 箱ひげ図(boxplot)
- 円グラフ(pie)
など、様々なグラフの描画も実行可能です。ax.scatter()となっている部分を、ax.hist()やax.boxplot()、ax.pie()などに変更することで簡単に実行可能です。
# ヒストグラムの例。箱ひげ図ならax.boxplot()、円グラフならax.pie()に変更
ax.hist(x, bins=10, label='1st', color='blue', alpha=0.7)
ax.set_title('ヒストグラム例')
ax.legend(fontsize=14)
まとめ
今回は描画のmatplotlibを使った描画の方法について、少し詳しく解説しました。今後も加筆修正して、グラフづくりに困ったときのチートシート代わりに出来る記事にしたいと思っています。
コメント