matplotlib

【matplotlib】散布図の描画方法 ~ plot, scatter ~

【matplotlib】散布図の描画方法 _plot, scatter _

Pythonによるデータ分析をする際にグラフなどの可視化でよく利用されるmatplotlib散布図を描画する方法について解説します。

散布図の描画方法

matplotlibで散布図を描画する方法としては、plotメソッドを用いる方法とscatterメソッドを用いる方法があります。それぞれの使い方を以降で紹介します。

plotによる散布図の描画

基本的な使い方

plotメソッドを用いて散布図を表示する場合には、以下の例のように使用します。

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('seaborn-whitegrid')

rs = np.random.RandomState(1)
x = rs.randn(100)
y = rs.randn(100)

# plotで散布図を表示する
plt.plot(x, y, 'o')

plt.show()
matplotlib 散布図 plot

styleの設定やデータ生成の部分は本題と外れるので詳細は省略しますが、ランダムなデータ点(x, y)を用意してplotメソッドに渡しています。

この際にマーカーとして’o’を指定するすることでマーカーの形状を変えることもできます。

Note

マーカーについて指定できるものについては公式ドキュメントのこちらを参照してください。

【参考】線と点一緒に表示する

散布図とは少しイメージが違うかもしれませんがplotを使用する場合は、以下の例のように線と点を一緒に表示することもできます。

ランダムな点であると分かりにくくなってしまうためsin曲線を例にしています。

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('seaborn-whitegrid')

x = np.linspace(0, 10, 50)
y = np.sin(x)

# 線と点を一緒に表示する
plt.plot(x, y, '-o')

plt.show()
matplotlib plotサンプル

指定をする際には、’-o’のように線とマーカーの形状を同時に指定することで実現できます。

scatterによる散布図の描画

基本的な使い方

散布図という言葉の通りで考えるとscatterメソッドの方が直感にあっているかと思います。scatterメソッドを用いた散布図の使い方は以下のようになります。

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('seaborn-whitegrid')

rs = np.random.RandomState(1)
x = rs.randn(100)
y = rs.randn(100)

# scatterで散布図を表示する
plt.scatter(x, y, marker='o')

plt.show()
matplotlib 散布図 scatter

plotと違って、マーカーを指定する場合は「marker=’o’」というようにキーワード引数で指定する必要があるので注意しましょう。

色やサイズを指定して使用する方法

scatterメソッドでは、各点のサイズや色を個別に指定することができます。以下の例で見てみましょう。

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('seaborn-whitegrid')

rs = np.random.RandomState(1)
x = rs.randn(100)
y = rs.randn(100)
# 色をランダムに指定する
colors = rs.rand(100)
# サイズをランダムに指定する
sizes = 1000 * rs.rand(100)

# 散布図を表示しカラーバーを表示する
# c:色、s:サイズ、alpha:透過度、cmap:カラーマップ指定
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='plasma')
# カラーバーを表示する
plt.colorbar()

plt.show()
matplotlib 散布図 scatter 色・サイズ変更

この例では色とサイズをランダムな数字で生成しています。

scatterに渡す引数として、cに各点の色、sに各点のサイズを渡すことで各ポイントの色とサイズを変更することができます。

なお、alphaは各点の透過度を表すもので、上記の結果の図からもわかるように透過させることで各点の重なり具合が見えるようになります。

また、cmapはカラーマップでmatplotlibで使用できるカラーマップを指定できます。今回の例では’plasma’というものを指定してみました。

カラーバーを表示する場合は、colorbarメソッドを呼ぶ必要があるので覚えておきましょう。

Note

カラーマップは、公式ドキュメントのこちらのページが参考になります。ページ中段ぐらいに以下のような色のマップの例が表示されていますので参考になるかと思います。

colormapサンプル

plotとscatterによる散布図描画の違い

上記では、散布図を描く例としてplotとscatterの二つのメソッドの使い方を紹介してきました。散布図と言われればscatterが思いつく方も多いかと思いますが、plotも取り上げていることにも意味があります。

これらのメソッドは、少ない点数の散布図表示の場合にはほとんど違いはありません。データ点数が数千点のように大きくなってくるとplotの方がscatterよりも効率的に描画することができます

scatterメソッドは、上記でも見てきた通り、各点それぞれで色を変えたりサイズを変えたりすることができます。一方でplotはすべて同じ色やサイズということになります。この処理の違いが描画の効率に影響を与えます。

散布図を描画するときには、どういった描画が必要なのか検討し、plotを使うのか、scatterを使うのかを検討してみてください。

NumPy, pandas, matplotlib, scikit-learnといったデータ分析関連パッケージについて体系的に習得したい場合は「Pythonデータサイエンスハンドブック」が大変おすすめです。
matplotlibに関する使い方も豊富に掲載されていますので手元に置いておくと便利です。是非購入を検討してみてください。