如何在 Matplotlib 中制作散点图的图例
Suraj Joshi
2023年1月30日
图例是对图中各种元素的简单描述。我们可以使用 matplotlib.pyplot.legend
函数来生成散点图的图例。
在 Maptlotlib 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()
输出:
我们在图中有两个单独的散点图:一个用 x
表示,另一个用 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 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
散点图创建图例,我们使用 plot()
方法而不是 scatter()
方法;这是因为 legend()
方法不支持 Axes3D
实例的 scatter()
方法返回的 Patch3DCollection
。
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn