一, 图题, 图例, 轴标签的方法
分别是下面三种方法:
图题: plt.title()
图例: plt.legend()
使用 label 参数, 为绘制的每条线添加一个标签, 然后使用 legend 方法展示出来.
- plt.plot(x, np.cos(x),'-g',label='cos(x)')
- plt.plot(x, np.sin(x),':b',label='sin(x)')
- plt.title('a cos curve')
- plt.xlabel("X")
- plt.ylabel("cos(X)")
- plt.legend()
注: 大多数的 plt 方法都可以直接转换成 ax 方法, 比如 plt.plot()->ax.plot(),plt.legend()->ax.legend(). 但并不是所有的都可以, 比如下面的需要这么转换:
- plt.xlabel() -> ax.set_xlabel()
- plt.ylabel() -> ax.set_ylabel()
- plt.xlim() -> ax.set_xlim()
- plt.ylim() -> ax.set_ylim()
- plt.title() -> ax.set_title()
在面向对象接口画图的时候, 不需要单独调用这些函数, 使用 ax.set() 方法一次性设置即可:
- x = np.linspace(0,10,100)
- ax = plt.axes()
- ax.plot(x,np.sin(x))
- ax.set(xlim=(0,10),ylim=(-2,2),xlabel='x',ylabel='sin(x)',title='a sin plot')
二, 图题的配置
title 标题方法, 也有许多可以配置的参数:
fontsize: 字体大小, 默认 12, 也可以使用 xx-small.... 字符串系列
fontweight: 字体粗细, 或者'light','normal','medium','semibold','bold', 'heavy','black'.
fontstyle: 字体类型, 或者'normal','italic','oblique'.
verticalalignment: 垂直对齐方式 , 或者'center','top','bottom','baseline'
horizontalalignment: 水平对齐方式, 可选参数:'left','right','center'
rotation: 旋转角度
alpha: 透明度, 参数值 0 至 1 之间
backgroundcolor: 背景颜色
bbox: 给标题增加外框 , 常用参数如下:
boxstyle: 方框外形
facecolor:(简写 fc) 背景颜色
edgecolor:(简写 ec) 边框线条颜色
edgewidth: 边框线条大小
下面是一些使用的例子:
- plt.title('A Title',fontsize='large',fontweight='bold') #设置字体大小与尺寸
- plt.title('A Title',color='yellow') #设置字体颜色
- plt.title('A Title',loc ='left') #设置字体位置
- plt.title('A Title',verticalalignment='bottom') #设置垂直对齐方式
- plt.title('A Title',rotation=45) #设置字体旋转角度
- plt.title('A Title',bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 )) #设置标题边框
实际上, title 标题方法的大部分参数也适用于 xlabel 和 ylabel 坐标轴标签方法.
三, 图例的配置
legend 图例方法有很多可以配置的参数和选项:
参数 | 说明 |
loc | 图例的位置 |
prop | 字体参数 |
fontsize | 字体大小 |
markerscale | 图例标记与原始标记的相对大小 |
markerfirst | 如果为 True,则图例标记位于图例标签的左侧 |
numpoints | 为线条图图例条目创建的标记点数 |
scatterpoints | 为散点图图例条目创建的标记点数 |
scatteryoffsets | 为散点图图例条目创建的标记的垂直偏移量 |
frameon | 是否显示图例边框 |
fancybox | 边框四个角是否有弧度 |
shadow | 控制是否在图例后面画一个阴影 |
framealpha | 图例边框的透明度 |
edgecolor | 边框颜色 |
facecolor | 背景色 |
ncol | 设置图例分为 n 列展示 |
borderpad | 图例边框的内边距 |
labelspacing | 图例条目之间的垂直间距 |
handlelength | 图例句柄的长度 |
handleheight | 图例句柄的高度 |
handletextpad | 图例句柄和文本之间的间距 |
borderaxespad | 轴与图例边框之间的距离 |
columnspacing | 列间距 |
title | 图例的标题 |
对于 loc 这个图例在坐标轴中的放置位置, 有两种表示方法: 数字或者字符串, 其对应关系如下:
0: 'best' : 自动选择最适合的位置
1: 'upper right': 右上
2: 'upper left': 左上
3: 'lower left': 左下
4: 'lower right': 右下
5: 'right': 右
6: 'center left': 左中
7: 'center right': 右中
8: 'lower center': 下中
9: 'upper center': 上中
10: 'center': 中间
设置字体大小的参数 fontsize 可以使用整数或者浮点数, 以及字符串'xx-small', 'x-small', 'small','medium', 'large', 'x-large'和'xx-large'.
下面是一些使用的例子
- plt.legend(loc='best',frameon=False) #去掉图例边框
- plt.legend(loc='best',edgecolor='blue') #设置图例边框颜色
- plt.legend(loc='best',facecolor='blue') #设置图例背景颜色, 若无边框, 参数无效
- plt.legend(loc='best',title='figure') #去掉图例边框
- plt.legend(loc='upper left', ncol=2, frameon=False) # 分两列显示, 在左上角
- plt.legend(fancybox=True,framealpha=1, shadow=True, borderpad=1)
默认情况下, 图例会忽略那些不带标签的绘图, 只为设置了 label 参数的绘图添加图例.
有时候可能需要在同一张图上显示多个图例. 不过, 用普通方法解决不了这个问题, 标准的 legend 接口只能为一张图创建一个图例. 但是可以通过 plt.gca().add_artist() 方法 (或者 ax.add_artist()), 将先前创建过的图例用底层的接口重新添加上去.
- lines = []
- styles= ['-', '--','-.',':']
- x = np.linspace(0,10,1000)
- for i in range(4): # 制造四条 sin 曲线
- lines += plt.plot(x, np.cos(x-i*np.pi/2), styles[i])
- plt.axis('equal')
- # 生成第一个图例, 并保存引用
- leg = plt.legend(lines[:2], ['line A', 'line B'], loc=1,frameon=False)
- # 生成第二个图例, 这会让第一个图例被抹去
- plt.legend(lines[2:], ['line C', 'line D'], loc=4,frameon=False)
- # gca 方法获取当前坐标轴, 再使用它的 `add_artist` 方法将第一个图例重新画上去
- plt.gca().add_artist(leg)
来源: http://www.bubuko.com/infodetail-3524151.html