目次
概要
matplotlib の matplotlib.pyplot.scatter() で散布図を描画する方法について解説します。
matplotlib.pyplot.scatter
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=<deprecated>, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)
引数
名前 | 型 | デフォルト値 |
---|---|---|
x | scalar or array-like, shape (n, ) | |
マーカーの x 座標 | ||
y | scalar or array-like, shape (n, ) | |
マーカーの y 座標 | ||
s | scalar or array-like, shape (n, ) | None |
マーカーの大きさ。単位は point**2 (1/5184 inch)。None の場合、rcParams[‘lines.markersize’] ** 2 (6**2=36)。 | ||
c | array-like or list of colors or color | None |
マーカーの色 | ||
marker | MarkerStyle | None |
マーカーのスタイル。None の場合、rcParams[“scatter.marker”] (“o”)。 | ||
cmap | Colormap | None |
c に数値を指定した場合に適用するカラーマップ。None の場合、rcParams[“image.cmap”] (“viridis”)。 | ||
norm | Normalize | None |
カラーマップを適用する際に、c に指定した数値を [0, 1] の範囲に正規化する Normalize オブジェクト。None の場合、colors.Normalize。 | ||
vmin, vmax | scalar | |
カラーマップを適用する際に、c に指定した数値を [0, 1] の範囲に正規化する際の最小値及び最大値。 | ||
alpha | scalar | None |
透過度 | ||
linewidths | scalar or array-like | None |
マーカーの枠線の幅。None の場合、rcParams[“lines.linewidth”] (1.5)。 | ||
edgecolors | {‘face’, ‘none’, None} or color or sequence of color | None |
マーカーの枠線の色。None の場合、rcParams[“scatter.edgecolors”] (“face”)。 | ||
plotnonfinite | boolean | False |
True の場合、inf の値を描画する。 |
返り値
名前 | 説明 |
---|---|
PathCollection | 作成したマーカー一覧 |
基本的な使い方
x
にマーカーの $x$ 座標の一覧、y
にマーカーの $y$ 座標の一覧を渡します。
In [1]:
import matplotlib.pyplot as plt
import numpy as np
x, y = np.random.randn(2, 15)
fig, ax = plt.subplots(figsize=(5, 5))
scatter = ax.scatter(x, y)
print(type(scatter))
plt.show()
<class 'matplotlib.collections.PathCollection'>
s – マーカーの大きさを設定する
すべてのマーカーに同じ大きさを設定する場合、s
にスカラーを設定します。
In [2]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=5)
plt.show()
マーカーごとに大きさを設定する場合、s
に x, y
と同じ長さの1次元配列を指定します。
In [3]:
size = np.random.randint(0, 200, len(x))
print(size)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=size)
plt.show()
[154 195 2 196 115 194 170 199 168 182 81 85 4 165 33]
c – マーカーの色を設定する
すべてのマーカーに同じ色を設定する場合、c
に単一の色を指定します。
In [4]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, c="r")
plt.show()
マーカーごとに色を設定する場合、c
に x, y
と同じ長さの1次元配列を指定します。
In [5]:
colors = np.random.choice(["r", "g", "b"], len(x))
print(colors)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, c=colors)
plt.show()
['r' 'b' 'g' 'g' 'g' 'g' 'b' 'r' 'r' 'r' 'g' 'b' 'b' 'b' 'b']
c
に x, y
と同じ長さの数値の1次元配列を指定した場合、マーカーの色は、数値を色に対応付けるカラーマップによって決まります。使用するカラーマップは cmap
で指定できます。
In [6]:
colors = np.random.randn(len(x))
print(colors)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, c=colors, cmap="magma")
plt.show()
[ 0.23242815 -1.09051451 -0.1295451 -1.23238242 1.1960109 -1.50561244 1.53980275 -0.45824963 -0.93691392 1.46753011 -2.11938189 -1.62780872 -0.34170842 1.51546788 -0.29968551]
marker – マーカーの種類を設定する
マーカーの種類は marker
で指定します。指定できる値はこちらを参照してください。
In [7]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, marker="x")
plt.show()
alpha – 透過度を設定する
マーカーの透過度は alpha
で指定します。
In [8]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=50, alpha=0.5)
plt.show()
linewidths / lw – マーカーの枠線の太さを設定する
すべてのマーカーの枠線の太さを同じに設定する場合、linewidths
にスカラーを指定します。
In [9]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=100, c="w", linewidths=2, ec="b")
plt.show()
マーカーごとに枠線の太さを設定する場合、linewidths
に x, y
と同じ長さの色の1次元配列を指定します。
In [10]:
widths = np.random.randint(1, 5, len(x))
print(widths)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=100, c="w", linewidths=widths, ec="b")
plt.show()
[4 2 2 2 4 2 3 3 3 3 4 1 1 2 1]
edgecolors / ec – マーカーの枠線の色を設定する
すべてのマーカーの枠線の色を同じに設定する場合、edgecolors に単一の色を指定します。色以外に以下の選択肢があります。
- “none”: 枠線なし
- “face”: マーカーと同じ色
In [11]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=100, c="w", linewidths=2, ec="b")
plt.show()
マーカーごとに枠線の色を設定する場合、edgecolors
に x, y
と同じ長さの1次元配列を指定します。
In [12]:
colors = np.random.choice(["r", "g", "b"], len(x))
print(colors)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x, y, s=100, c="w", edgecolors=colors)
plt.show()
['b' 'r' 'b' 'b' 'r' 'g' 'g' 'r' 'g' 'r' 'g' 'g' 'r' 'g' 'r']
コメント