Matplotlib で散布図のマーカーサイズを設定する方法
Suraj Joshi
2023年1月30日
散布図のマーカーのサイズは、関数 scatter()
の s
キーワード引数によって制御されます。ここで、s
はスカラーまたは配列です。
関数 scatter()
の s
キーワード引数
scatter
関数の構文:
matplotlib.pyplot.scatter(
x,
y,
s=None,
c="b",
marker="o",
cmap=None,
norm=None,
vmin=None,
vmax=None,
alpha=None,
linewidths=None,
faceted=True,
verts=None,
hold=None,
**kwargs
)
ここで、s
は markersize
を設定するためのスカラーまたは x
および y
と同じ長さの配列です。デフォルトのマーカーサイズは rcParams['lines.markersize'] ** 2
です。ドキュメントによると、s
は ポイント単位のマーカーサイズ** 2
です
すべてのポイントに同じマーカーサイズを設定する
import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = np.sin(x)
plt.scatter(x, y, s=500, c="magenta")
plt.title("Scatter plot of sinx")
plt.xlabel("x")
plt.ylabel("sinx")
plt.xlim(0, 6)
plt.ylim(-2, 2)
plt.show()
ポイントのマーカーサイズを不均一に増やす
マーカーの幅を 2 倍にする
マーカーの width
(または height
)を 2 倍にするには、A = W*H => (2W)*(2H)= 4A
のように、s
を 4
倍に増やす必要があります。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [a ** 2 for a in x]
s = [10 * 4 ** n for n in range(len(x))]
plt.scatter(x, y, s=s)
plt.title("Doubling width of marker in scatter plot")
plt.xlabel("x")
plt.ylabel("x**2")
plt.xlim(0, 6)
plt.ylim(0, 30)
plt.show()
マーカーの面積を 2 倍にする
マーカーの面積を 2 倍にするには、面積を 2
倍に増やして、マーカーサイズが面積に比例してスケーリングされるようにします。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [a ** 2 for a in x]
s = [10 * 2 ** n for n in range(len(x))]
plt.scatter(x, y, s=s)
plt.title("Doubling area of marker in scatter plot")
plt.xlabel("x")
plt.ylabel("x**2")
plt.xlim(0, 6)
plt.ylim(0, 30)
plt.show()
plot
メソッドでサイズを制御するための markersize
パラメータ
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [0] * len(x)
plt.plot(x, y, "bo", markersize=10)
plt.show()
ここで、円の領域は markersize
パラメータによって制御されます。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn