Pythonによるデータ分析をする際にグラフなどの可視化でよく利用されるmatplotlibで散布図を描画する方法について解説します。
Contents
散布図の描画方法
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()
styleの設定やデータ生成の部分は本題と外れるので詳細は省略しますが、ランダムなデータ点(x, y)を用意してplotメソッドに渡しています。
この際にマーカーとして’o’を指定するすることでマーカーの形状を変えることもできます。
マーカーについて指定できるものについては公式ドキュメントのこちらを参照してください。
【参考】線と点一緒に表示する
散布図とは少しイメージが違うかもしれませんが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()
指定をする際には、’-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()
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()
この例では色とサイズをランダムな数字で生成しています。
scatterに渡す引数として、cに各点の色、sに各点のサイズを渡すことで各ポイントの色とサイズを変更することができます。
なお、alphaは各点の透過度を表すもので、上記の結果の図からもわかるように透過させることで各点の重なり具合が見えるようになります。
また、cmapはカラーマップでmatplotlibで使用できるカラーマップを指定できます。今回の例では’plasma’というものを指定してみました。
カラーバーを表示する場合は、colorbarメソッドを呼ぶ必要があるので覚えておきましょう。
カラーマップは、公式ドキュメントのこちらのページが参考になります。ページ中段ぐらいに以下のような色のマップの例が表示されていますので参考になるかと思います。
plotとscatterによる散布図描画の違い
上記では、散布図を描く例としてplotとscatterの二つのメソッドの使い方を紹介してきました。散布図と言われればscatterが思いつく方も多いかと思いますが、plotも取り上げていることにも意味があります。
これらのメソッドは、少ない点数の散布図表示の場合にはほとんど違いはありません。データ点数が数千点のように大きくなってくるとplotの方がscatterよりも効率的に描画することができます。
scatterメソッドは、上記でも見てきた通り、各点それぞれで色を変えたりサイズを変えたりすることができます。一方でplotはすべて同じ色やサイズということになります。この処理の違いが描画の効率に影響を与えます。
散布図を描画するときには、どういった描画が必要なのか検討し、plotを使うのか、scatterを使うのかを検討してみてください。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。