散布図したい(matplotlib.axes.Axes.scatter)
1import numpy as np
2import matplotlib.pyplot as plt
3
4# データを準備する
5xdata = data["x"]
6ydata = data["y"]
7sizes = data["sizes"]
8colors = data["colors"]
9
10# Figureエリアを作成
11fig, ax = plt.subplots()
12
13# 散布図
14sc = ax.scatter(
15 x=xdata,
16 y=ydata,
17 s=sizes,
18 c=colors,
19 cmap="viridis",
20 vmin=0,
21 vmax=10,
22 label="凡例に使う名前",
23)
24
25# axesの設定
26ax.set(
27 xlim=(0, 8),
28 xticks=np.arange(1, 8),
29 ylim=(0, 8),
30 yticks=np.arange(1, 8),
31)
32ax.grid(True)
33
34fig.colorbar(sc, ax=ax)
35ax.legend()
36
37plt.show()
Axes.scatterで散布図を作成できます。
X軸(x)とY軸(y)の値を配列で指定します。
オプションでマーカーの大きさ(s)や色(c)を変更できます。
カラーマップの上限と下限はそれぞれvminとvmaxで設定できます。
cmapオプションで設定できる配色パターン名はcolormap referenceを参照してください。
参考
マーカーしたい(s)
1sc = ax.scatter(
2 x=xdata,
3 y=ydata,
4 s=sizes,
5 marker="o",
6)
markerオプションで、マーカーの種類を変更できます。
マーカーの大きさはsオプションで変更できます。
たとえば、y軸の値に応じてマーカーの大きさを変えたい場合、
あらかじめsizes=math.sqrt(ydata)のようにマーカーの大きさを計算しておき、
s=sizesと指定します。
注釈
上記のように、マーカーの大きさ(=円の面積)で大小を分かりやすく表現することはよくあります。 円の面積は半径の2乗に比例するので、マーカーの大きさは値の平方根に比例させる必要があります。 値に比例させてしまうと、視覚的に得られる印象が実際の値より大きくなってしまい、誤解を招く可能性があります。
カラーマップしたい(cmap)
1import matplotlib.pyplot as plt
2
3# キャンバスを作成
4fig, ax = plt.subplots()
5
6# 散布図を作成
7sc = ax.scatter(
8 x=xdata,
9 y=ydata,
10 c=colors,
11 cmap="viridis",
12 vmin=0,
13 vmax=10,
14)
cmapオプションで、マーカーの色のカラーマップを変更できます。
z軸の値を色で表現したい場合は、cオプションでz軸の値を指定し、cmapオプションでカラーマップを指定します。
カラーマップの上限値と下限値はそれぞれvminとvmaxで設定できます。