機械学習やデータ解析において、データの可視化は不可欠です。その中でも、散布図はデータ間の関係性や分布を理解するのに役立ちます。Pythonのライブラリであるmatplotlibを使用して、散布図を描く方法について解説します。
matplotlibとは
プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできる(Wiki参照)
matplotlib – Wikipedia
インストール方法(Mac)
まずはmatplotlibをインストールする必要があります。ターミナルを開き、以下のコマンドを実行します。
pip install matplotlib
import方法
Pythonプログラム内でmatplotlibを使用するためには、次のように宣言します。
import matplotlib.pyplot as plt
基本のプロット
散布図を描くための基本的なソースコードは以下の通りです。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [9, 8, 7, 6, 5]
plt.scatter(x,y)
plt.show()
デフォルトの状態でよければ、これだけで散布図(ポイント)をプロットできます。
xとyの同じインデックスつまり(1,9)、(2,8)、(3,7)、(4,6)、(5,5)にプロットされています。
問題なくプロットされてますね。では、次項以降で見た目をカスタマイズしていきます。
見た目のカスタマイズ
散布図の見た目をカスタマイズすることもできます。以下のコードでは、マーカーの色と形の変更し、凡例を設定しています。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [9, 8, 7, 6, 5]
plt.scatter(x, y, marker='*',c='red',label='test')
plt.legend()
plt.show()
Tips:主要なカスタマイズキーワード
散布図作成時に使用できる引数オプションが非常に多くあります。が必要最低限テーブルにまとめた分をおさえて記載します。
kywd | 入力例 | 備考 |
---|---|---|
x,y | [1,2,3,4,5] または 事前に定義したlistなど | array形式のもの ※必須 |
s | s=5 または x,yと同範囲のリスト(要素はサイズ) | マーカーの大きさ 指定しないと20 |
c | c=”red” または c=”#FFFF00″ または c=(1.0,0,1.0) | マーカーの色 色名や16進数、RGBでの指定が可能 |
marker | marker=”.” | マーカーの形 指定しないと○ *は星形など様々指定可 |
alpha | alpha=0.3 | マーカーの透明度 指定は0-1の間で行う |
linewidths | linewidths=2 | マーカーの枠線の幅 |
label | label=”label1″ | 凡例名 |
色見本
color example code: named_colors.py — Matplotlib 2.0.2 documentation
マーカー見本
lines_bars_and_markers example code: marker_reference.py — Matplotlib
見た目のカスタマイズ(目盛り線)
以下のコードでは、グリッド線を細かく指定しています。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [9, 8, 7, 6, 5]
plt.scatter(x,y, marker='s',c='red',label='test')
plt.legend()
plt.grid(True) #グリッド線追加
plt.xlabel("X-label") #X軸ラベル追加
plt.ylabel("Y-label") #Y軸ラベル追加
plt.title("TEST GRAPH") #グラフタイトル追加
plt.show()
【応用】複数のデータセットを重ねて描画
複数のデータセットを一つのグラフに重ねて表示することも可能です。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [9, 8, 7, 6, 5]
y2 = [5, 6, 7, 8, 9]
plt.scatter(x,y, marker='s',c='red',label='test')
plt.scatter(x,y2, marker='p',c='blue',label='test2') #追加プロット
plt.legend()
plt.grid(True)
plt.xlabel("X-label")
plt.ylabel("Y-label")
plt.title("TEST GRAPH")
plt.show()
まとめ
本記事では、Pythonのmatplotlibライブラリを使用して散布図を描画する方法について詳しく解説しました。まず、基本的なプロット方法を紹介し、その後、グラフの見た目やスタイルをカスタマイズする方法について説明しました。さらに、複数のデータセットを同じグラフ上に重ねて表示する方法も示しました。
コメント