python matplotlib选择性插入图例(legend)

python matplotlib选择性插入图例(legend)

  • 注意

用python画图时,有时一条曲线的完整信息需要多次绘制完成。如果一个图中包含多条这种曲线,生成标注时就会有重复的情况。

比如下图,蓝色数字表示画图的顺序:先绘制[0:15]区间内的sinx图像;再绘制[15:30]区间内的sinx图像;再绘制[0:15]区间内的cosx图像;最后绘制[15:30]区间内的cosx图像。此时如果直接标注,前两个的图例都是对黑线的描述。
python matplotlib选择性插入图例(legend)_第1张图片

一般在画完图后,如果直接使用plt.legend(['Legend 1','Legend 2'])这种方式声明标注,python会按照这个图中曲线绘制的顺序来分配标注,如果标注的数量小于绘制次数,指定了多少个名字,就会标给多少条曲线。

如上例所示,图中一共画了4条曲线,如果只给出[‘sinx’,‘cosx’]两个标注,默认是分给第1、第2条曲线的。如果想要把两个标注分给指定曲线,可以通过如下方法实现:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(0,15,0.1)
x2 = np.arange(14,30,0.1)
y1 = np.sin(x1)
y2 = np.sin(x2)
p1, = plt.plot(x1,y1,'k')		# 画图时指定一个存储该图像信息的变量
p2, = plt.plot(x2,y2,'k')
z1 = np.cos(x1)
z2 = np.cos(x2)
p3, = plt.plot(x1,z1,'r')
p4, = plt.plot(x2,z2,'r')

plt.legend([p1,p3],['sinx','cosx'])		# 指定标注对应的曲线

这样就可以按需插入图例了
python matplotlib选择性插入图例(legend)_第2张图片

注意

指定存储图像信息的变量时,不同的绘图命令可能对应不同格式。如果是用plt.plot()画图,就用p1, = plt.plot(x1,y1),变量名后面要有那个逗号;如果是用plt.scatter()画散点图,就用p1 = plt.scatter(x1,y1),不需要加逗号。
这是我目前用到的两种绘图命令,用其他命令画图时如果插入图例不成功,可以看一下是不是图形变量的命名有问题。

你可能感兴趣的:(怎么办系列)