【Python】Matplotlibで散布図を作る

matplotlib_散布図

Pythonのグラフ描画ツール、Matplotlibで散布図を作る方法を紹介します。

Matplotlibで散布図を描画

import matplotlib.pyplot as plt #モジュールのインポート

x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ

Figure, ax = plt.subplots() #グラフを定義

ax.scatter(x,y) #プロット
ax.scatter(x,y2) #プロット
ax.scatter(x,y3) #プロット

plt.show() #グラフを描画

このコードは、以下のような散布図を生成します。

matplotlib_散布図
matplotlibで描画した散布図

Figure, ax = plt.subplots()は、Matplotlib公式が推奨しているグラフ指定方法です。axが持つメソッド(この場合はscatter())に引数を渡すことで、グラフにできます。

散布図はscatter()に、x軸用のデータ、y軸用のデータを順に渡します。

散布図のマーカーの形を変えてみる

上述した方法は、最もシンプルな散布図の描画方法です。ここで、マーカーの形を変えてみましょう。

import matplotlib.pyplot as plt #モジュールのインポート

x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ

Figure, ax = plt.subplots() #グラフを定義

ax.scatter(x,y, marker='o') #markerを指定
ax.scatter(x,y2, marker='s') #markerを指定
ax.scatter(x,y3, marker='^') #markerを指定

plt.show() #グラフを描画

出力される散布図は以下の通りです。

matplotlib_散布図_marker
matplotlibの散布図のマーカーを変える

markerに文字列を指定することで、形が変わります。’o’ならマル、’s’なら四角、’^’なら三角ですね。
この他にも、指定方法はたくさんあります。こちらのページを参照してみてください。

散布図のマーカーの面積を変える

散布図のマーカー面積を変更するには、scatter()にs=’100’のような引数を渡します。

import matplotlib.pyplot as plt #モジュールのインポート

x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ

Figure, ax = plt.subplots() #グラフを定義

ax.scatter(x,y, marker='o', s=100) #markerの面積を変更
ax.scatter(x,y2, marker='s', s=200) #markerの面積を変更
ax.scatter(x,y3, marker='^', s=300) #markerの面積を変更

plt.show() #グラフを描画

散布図の出力結果は以下の通りです。

matplotlib_marker_s
matplotlibの散布図のマーカー面積を変更

sに指定している数値が大きいほど、面積が大きくなっているのがわかるかと思います。

散布図のマーカーの色を指定

マーカーの色を指定するには、color=’black’のような引数を、scatter()に渡す必要があります。

import matplotlib.pyplot as plt #モジュールのインポート

x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ

Figure, ax = plt.subplots() #グラフを定義

ax.scatter(x,y, marker='o', s=100, color='black') #markerの色を指定
ax.scatter(x,y2, marker='s', s=200, color='black') #markerの色を指定
ax.scatter(x,y3, marker='^', s=300, color='black') #markerの色を指定

plt.show() #グラフを描画

散布図の出力結果は次の通りです。

matplotlib_散布図_色
散布図の色が、全て黒になった。

Numpyと組み合わせて、ランダム散布図を作る

Matplotlibは、NumpyやPandasと非常に相性が良いライブラリです。Numpyの乱数生成機能を使って、100個の点をランダムに表示してみましょう。

import matplotlib.pyplot as plt #モジュールのインポート
import numpy as np #Numpyのインポート

x = np.random.rand(100) #x軸用のデータ
y = np.random.rand(100) #y軸用のデータ
colors = np.random.rand(100) #色をランダムな数値で指定
area = (30*np.random.rand(100))**2 #面積用データ

Figure, ax = plt.subplots() #グラフを定義

ax.scatter(x,y, c=colors, s=area, alpha=0.5) #sで色を配列で一つづつ指定、alphaは透明度

plt.show() #グラフを描画

このコードで、次のような散布図が出力されます。

matplotlib_散布図_ランダム
Matplotlibのランダム生成散布図

個々のマーカーの色を、配列で指定するときは、c=[配列]とします。また、alphaでは、透明度が変更できます。0が透明で、1が不透明です。

Appendix

関連記事:x軸、y軸の範囲を変更
関連記事:複数のグラフをまとめて描画
関連記事:グラフを保存する
関連記事:折れ線グラフを描画
関連記事:棒グラフを描画
関連記事:グラフの色を指定

参考書籍:「Pythonによるデータ分析入門 第2版