散布図

Python の matplotlib モジュールを利用して散布図を描くとき、pyplot.scatter を利用する。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(100)
y = np.random.rand(100)

plt.scatter(x, y)

plt.title("scatterplot")
plt.xlabel("x")
plt.ylabel("y")

plt.show()
scatter メソッドを利用して描いた散布図

濃淡図を描く場合、alpha に透明度を代入してプロットする。

x = np.random.normal(size = 2000)
y = np.random.normal(size = 2000)

plt.scatter(x, y, alpha = 0.3)

plt.title("scatterplot")
plt.xlabel("x")
plt.ylabel("y")

plt.show()
scatter メソッドを利用して描いた散布図

マーカーの種類、色、サイズはそれぞれ markercs オプションで指定する。指定できるマーカーの種類は matplotlib のドキュメントにかかれている(Matplotlib API Markers)。

x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y1 = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
y2 = np.array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
y3 = np.array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3])


plt.scatter(x, y1, c = x, s = x * 10, marker = "o")
plt.scatter(x, y2, c = x, s = x * 20, marker = "s")
plt.scatter(x, y3, c = x, s = x * 40, marker = "^")
plt.show()
scatter メソッドを利用して描いた散布図

s オプションを利用すれば、三次元データを二次元で描く場合、z 座標をその面積とすることができる。マーカーの重なりも分かるように半透明にする。

x = np.random.rand(500)
y = np.random.rand(500)
z = np.random.normal(size = 500)

plt.scatter(x, y, s = z * 200, alpha = 0.4)
plt.show()
scatter メソッドを利用して描いた散布図