Matplotlib で散布図の凡例を作成する方法

Suraj Joshi 2023年1月30日
  1. Matplotlib の 2D 散布図に凡例を追加する
  2. Matplotlib で 3D 散布図に凡例を追加する
Matplotlib で散布図の凡例を作成する方法

凡例とは、簡単に言えば、図の中の様々な要素の記述です。散布図の凡例を生成するには、matplotlib.pyplot.legend 関数を使用します。

Matplotlib の 2D 散布図に凡例を追加する

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]

y1 = [i ** 2 for i in x]
y2 = [2 * i + 1 for i in x]

plt.scatter(x, y1, marker="x", color="r", label="x**2")
plt.scatter(x, y2, marker="o", color="b", label="2*x+1")
plt.legend()
plt.show()

出力:

2D 散布図に凡例を追加

図の中には 2つの別々の散布図があります: 1つは x で表され、もう 1つは o マークで表されています。凡例を生成する際にタグとして用いられる散布図に label を割り当てる。次に、関数 legend() を用いて図の凡例を作成し、最後に show() メソッドを用いて図全体を表示します。

また、ラベルのタプルを直接 legend() メソッドの引数に渡し、legend() メソッドの loc パラメータを用いて凡例の位置を変更することもできます。

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]

y1 = [i ** 2 for i in x]
y2 = [2 * i + 1 for i in x]

plt.scatter(x, y1, marker="x", color="r")
plt.scatter(x, y2, marker="o", color="b")
plt.legend(("x**2", "2*x+1"), loc="center left")
plt.show()

出力:

Matplotlib 内の位置を指定して、2D 散布図に凡例を追加する

このプロセスは、2つの散布図と軸のボーダーボックスの center left に配置された凡例を持つ図を作成します。

Matplotlib で 3D 散布図に凡例を追加する

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 1, 4, 5, 6]

z1 = [i + j for (i, j) in zip(x, y)]
z2 = [3 * i - j for (i, j) in zip(x, y)]

axes = plt.subplot(111, projection="3d")
axes.plot(x, y, z1, "x", label="x+y")
axes.plot(x, y, z2, "o", label="3*x-y")

plt.legend(loc="upper left")
plt.show()

出力:

3D 散布図に凡例を追加

3D 散布図の凡例を作成するには、scatter() メソッドの代わりに plot() メソッドを用います。これは、legend() メソッドが Axes3D インスタンスの scatter() メソッドが返す Patch3DCollection をサポートしていないからです。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Matplotlib Scatter Plot

関連記事 - Matplotlib Legend