标注
基本标注
使用text()会将文本放置在轴域的任意位置。 文本的一个常见用例是标注绘图的某些特征,而annotate()方法提供辅助函数,使标注变得容易。 在标注中,有两个要考虑的点:由参数xy表示的标注位置和xytext的文本位置。 这两个参数都是(x, y)元组。
importnumpy as npimportmatplotlib.pyplot as plt
fig=plt.figure()
ax= fig.add_subplot(111)
t= np.arange(0.0, 5.0, 0.01)
s= np.cos(2*np.pi*t)
line,= ax.plot(t, s, lw=2)
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.05),
)
ax.set_ylim(-2,2)
plt.show()
在该示例中,xy(箭头尖端)和xytext位置(文本位置)都以数据坐标为单位。 有多种可以选择的其他坐标系 - 你可以使用xycoords和textcoords以及下列字符串之一(默认为data)指定xy和xytext的坐标系。
| 参数 | 坐标系 |
| 'figure points' | 距离图形左下角的点数量 |
| 'figure pixels' | 距离图形左下角的像素数量 |
| 'figure fraction' | 0,0 是图形左下角,1,1 是右上角 |
| 'axes points' | 距离轴域左下角的点数量 |
| 'axes pixels' | 距离轴域左下角的像素数量 |
| 'axes fraction' | 0,0 是轴域左下角,1,1 是右上角 |
| 'data' | 使用轴域数据坐标系 |
例如将文本以轴域小数坐标系来放置,我们可以:
ax.annotate('local max', xy=(3, 1), xycoords='data',
xytext=(0.8, 0.95), textcoords='axes fraction',
arrowprops=dict(facecolor='black', shrink=0.05),
horizontalalignment='right', verticalalignment='top',
)
对于物理坐标系(点或像素),原点是图形或轴的左下角。
或者,你可以通过在可选关键字参数arrowprops中提供箭头属性字典来绘制从文本到注释点的箭头。
arrowprops键描述
width
箭头宽度,以点为单位
frac
箭头头部所占据的比例
headwidth
箭头的底部的宽度,以点为单位
shrink
移动提示,并使其离注释点和文本一些距离
**kwargs
matplotlib.patches.Polygon的任何键,例如facecolor
在下面的示例中,xy点是原始坐标(xycoords默认为'data')。 对于极坐标轴,它在(theta, radius)空间中。 此示例中的文本放置在图形小数坐标系中。 matplotlib.text.Text关键字args,例如horizontalalignment,verticalalignment和fontsize,从annotate传给Text实例。
高级标注
使用框和文本来标注
让我们以一个简单的例子来开始。
在pyplot模块(或Axes类的text方法)中的text()函数接受bbox关键字参数,并且在提供时,在文本周围绘制一个框。
与文本相关联的补丁对象可以通过以下方式访问:
bb =t.get_bbox_patch()
返回值是FancyBboxPatch的一个实例,并且补丁属性(如facecolor,edgewidth等)可以像平常一样访问和修改。 为了更改框的形状,请使用set_boxstyle方法。
bb.set_boxstyle("rarrow", pad=0.6)
该参数是框样式的名称与其作为关键字参数的属性。 目前,实现了以下框样式。
类名称属性
Circle
circle
pad=0.3
DArrow
darrow
pad=0.3
LArrow
larrow
pad=0.3
RArrow
rarrow
pad=0.3
Round
round
pad=0.3,rounding_size=None
Round4
round4
pad=0.3,rounding_size=None
Roundtooth
roundtooth
pad=0.3,t