Matplotlib で散布図のマーカーサイズを設定する方法

Suraj Joshi 2023年1月30日
  1. 関数 scatter()s キーワード引数
  2. plot メソッドでサイズを制御するための markersize パラメータ
Matplotlib で散布図のマーカーサイズを設定する方法

散布図のマーカーのサイズは、関数 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
)

ここで、smarkersize を設定するためのスカラーまたは 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 のように、s4 倍に増やす必要があります。

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 倍にするには、面積を 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()

マーカーの 2 倍の領域

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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Matplotlib Scatter