散布図したい(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)を変更できます。

カラーマップの上限と下限はそれぞれvminvmaxで設定できます。 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オプションでカラーマップを指定します。 カラーマップの上限値と下限値はそれぞれvminvmaxで設定できます。

リファレンス