添加图例

添加图例需要用到legend()函数,接下来在示例中详细说明它的用法:

示例1:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-6,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
line1, = plt.plot(x,y1,'r--')
line2, = plt.plot(x,y2,'b-')
plt.legend(handles=[line1,line2],labels=["sin function","cos function"],loc="lower right",fontsize=6)
plt.show()

结果:

matlib图例python matplotlib绘图图例_图例

<分析>

plt.legend()函数用于生成图例,它的handles参数用于指定图线的显示顺序,labels参数为每条图线生成标签,loc参数指定图例的位置,fontsize参数指定标签的字体大小,如果有多个图例,那么handles参数列表和labels参数列表均设置为列表格式。

除以上介绍的legend()参数外,其它控制图例样式的参数都能应用其中,比如edgecolor、shadow、title等,不再一一举例。
另外,handles参数也可省略,此时labels参数将按默认顺序为每条曲线添加图例。

除此之外,你也可以在plot()函数中单独地为每条曲线添加图例,这样在调用legend()函数时将更简洁。

示例2:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-6,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
line1, = plt.plot(x,y1,'r--',label="sin function")
line2, = plt.plot(x,y2,'b-',label="cos function")
plt.legend(loc="best",fontsize=6)
plt.show()

结果:

matlib图例python matplotlib绘图图例_图例_02

示例2在plot()函数中指定label参数,同时在调用legend()函数时省略了handles参数,并制定loc参数为"best",即自动选择在最恰当的地方生成图例。

关于loc参数,有以下取值可选:

best :自动选择最佳位置。
upper right :将图例放在右上角。
upper left :将图例放在左上角。
lower left :将图例放在左下角。
lower right :将图例放在右下角。
right :将图例放在右边。
center left :将图例放在左边居中的位置。
center right :将图例放在右边居中的位置。
lower center :将图例放在底部居中的位置。
upper center :将图例放在顶部居中的位置。
center :将图例放在中心。

另外注意,matplotlib默认是不支持label的参数为中文字体的,如果想设置中文字体,可以尝试导入matplotlib.font_manager子模块下的 FontProperties 类加载中文字体。

或者直接修改matplotlib的默认字体

当然还有更方便的方法,即配置plt.rc参数

示例3:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-6,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
 #设置rc参数显示中文标题
plt.rcParams['font.sans-serif']='SimHei'
#设置正常显示字符,用到这条语句是因为坐标轴包含负值,在调用上一条语句后不使用该语句则负号会乱码
plt.rcParams['axes.unicode_minus'] = False 
line1, = plt.plot(x,y1,'r--',label="正弦函数")
line2, = plt.plot(x,y2,'b-',label="余弦函数")
plt.legend(loc="best",fontsize=6)
plt.show()

结果:

matlib图例python matplotlib绘图图例_中文字体_03

关于rc参数的更多细节内容会在以后找机会介绍。