Matplotlib で散布図の凡例を作成する方法
Suraj Joshi
2023年1月30日
凡例とは、簡単に言えば、図の中の様々な要素の記述です。散布図の凡例を生成するには、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()
出力:
図の中には 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()
出力:
このプロセスは、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
散布図の凡例を作成するには、scatter()
メソッドの代わりに plot()
メソッドを用います。これは、legend()
メソッドが Axes3D
インスタンスの scatter()
メソッドが返す Patch3DCollection
をサポートしていないからです。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn