matplotlib
是一个用于创建高质量图表的 Python 库。在 matplotlib
中,有时候我们希望某些艺术家(如线条、散点图等)不被显示在图例中。这可以通过设置艺术家的 label
属性为 None
或空字符串来实现。
matplotlib
中,艺术家是指构成图表的各种元素,如线条、文本、散点图等。以下是一个简单的示例,展示了如何在 matplotlib
中添加不在图例上显示标签的艺术家:
import matplotlib.pyplot as plt
# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
# 创建图表
fig, ax = plt.subplots()
# 绘制线条,并设置 label 为 None
line1, = ax.plot(x, y1, label=None, color='blue')
line2, = ax.plot(x, y2, label='Line 2', color='red')
# 添加图例
ax.legend()
# 显示图表
plt.show()
在这个示例中,line1
的 label
被设置为 None
,因此它不会出现在图例中。
问题:为什么设置了 label=None
但图例中仍然显示了该线条?
原因:这通常是因为在调用 ax.legend()
之前,图例已经根据之前的线条自动创建了。此时,即使后续设置了 label=None
,图例也不会更新。
解决方法:
ax.legend()
。handles
和 labels
参数手动创建图例,并排除不需要显示的线条。示例代码(解决方法):
# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
# 创建图表
fig, ax = plt.subplots()
# 绘制线条
line1, = ax.plot(x, y1, color='blue')
line2, = ax.plot(x, y2, label='Line 2', color='red')
# 手动创建图例,排除不需要显示的线条
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[1:], labels[1:])
# 显示图表
plt.show()
在这个示例中,我们使用 ax.get_legend_handles_labels()
获取所有线条的句柄和标签,然后手动创建图例,并排除不需要显示的线条(即 line1
)。
领取专属 10元无门槛券
手把手带您无忧上云