本章所建立的图表,应该说已经很好了,缺点是缺乏各种线条代表的意义,在Excel中称图例(legend),下列笔者将直接以实例说明。
程序实例ch1_13.py: 为ch1_12.py建立图例。
执行结果
这个程序最大不同在第10~12行,下列是以第10行解释。
上述调用plt.plot( )时需同时设定 label ,最后使用第13行的方式执行legend( )图例的调用。其中参数loc可以设定图例的位置,可以有下列设定方式:
如果省略loc设定,则使用预设‘best’,在应用时可以使用设定整数值,例如:设定loc=0与上述效果相同。若是顾虑程序可读性,建议使用文字字符串方式设定,当然也可以直接设定数字。
程序实例ch1_13_1.py: 在ch1_13.py的基础上省略loc设定。
执行结果 与ch1_13.py相同。
程序实例ch1_13_2.py: 在ch1_13.py的基础上设定loc=0。
执行结果 与ch1_13.py相同。
程序实例ch1_13_3.py: 在ch1_13.py的基础上设定图例在右上角。
执行结果 下方左图。
程序实例ch1_13_4.py: 在ch1_13.py的基础上设定图例在左边中央。
执行结果 如上右图。
经过上述解说,我们已经可以将图例放在图表内了。如果想将图例放在图表外,需要先理解坐标,在图表内左下角位置坐标是(0,0),右上角位置坐标是(1,1),概念如下:
首先需使用bbox_to_anchor( )当作legend( )的一个参数,设定锚点(anchor),也就是图例位置,例如:如果我们想将图例放在图表右上角外侧,需设定loc=‘upper left’,然后设定bbox_to_anchor(1,1)。
程序实例ch1_13_5.py: 在ch1_13.py的基础上将图例放在图表右上角外侧。
执行结果 下方左图。
上述最大的缺点是由于图表与Figure 1的留白不足,造成无法完整显示图例。matplotlib模块内有tight_layout( )函数,可利用设定 pad 参数在图表与Figure 1间设定 留白 。
程序实例ch1_13_6.py: 设定pad=7,重新设计ch1_13_5.py。
执行结果 可参考如上右图。
很明显图例显示不完整的问题改善了。如果将pad改为h_pad/w_pad可以分别设定高度/宽度的留白。