如何修改matplotlib代码为整个numpy数组添加单个图例标签?
解决Matplotlib绘制多维数组时图例过多的问题
当用plt.plot()绘制多维numpy数组时,函数会自动将数组的每一列作为单独曲线绘制,传入的label参数会被应用到每一条曲线上,导致图例出现重复标签(数量等于数组列数)。要实现只为整个数组添加一个图例标签,有两种常用方法:
方法一:利用绘图返回的线条对象创建图例
捕获plot()返回的线条对象集合,只取其中一个代表整个数组,再手动指定图例标签:
import numpy as np import matplotlib.pyplot as plt a = np.random.rand(10,2) b = np.random.rand(10,4) plt.figure() # 获取每组曲线的线条对象 lines_a = plt.plot(a, 'blue') lines_b = plt.plot(b, 'red') # 仅用每组的第一条曲线创建图例 plt.legend([lines_a[0], lines_b[0]], ['a', 'b']) plt.show()
方法二:手动创建自定义图例条目
不依赖绘图生成的线条,直接创建图例样式条目并指定标签:
import numpy as np import matplotlib.pyplot as plt from matplotlib.lines import Line2D a = np.random.rand(10,2) b = np.random.rand(10,4) plt.figure() plt.plot(a, 'blue') plt.plot(b, 'red') # 自定义图例线条样式 custom_legend = [ Line2D([0], [0], color='blue', linewidth=2), Line2D([0], [0], color='red', linewidth=2) ] plt.legend(custom_legend, ['a', 'b']) plt.show()
内容的提问来源于stack exchange,提问作者Nir
相关产品推荐
相关产品推荐

