添加文本说明
很多时候我们需要在图形中添加说明文本,来凸显图中点或线的重要性。
importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0, 8, 1000) y=2.0*x+0.5*5*x**2plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.scatter(x[0],y[0]) plt.text(x[0], y[0], 'start') plt.plot(x, y, c='c') plt.show()
Tips:plt.text() 函数接受要显示的位置和文本作为参数。位置以坐标形式给出,其指定了文本框左下角的位置。
文本的对齐方式
文本外围包含隐式文本框(下文会介绍文本框的显示方法),此框用于将文本与传递给 plt.text() 的坐标进行相对对齐。使用 verticalalignment 和 horizontalalignment 参数(它们分别可以简写为 va 和 ha )控制对齐的方式。
垂直对齐选项如下所示:
参数值 |
说明 |
center |
参数坐标相对于文本框的中心 |
top | 参数坐标相对于文本框的上侧 |
bottom |
参数坐标相对于文本框的底部 |
baseline |
参数坐标相对于文本的基线 |
importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0, 8, 1000) y=2.0*x+0.5*5*x**2x_b=np.linspace(0, 8, 1000) y_b=np.zeros_like(x_b) plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.scatter(x[0],y[0]) plt.text(0, 0, 'center', va='center') plt.text(2, 0, 'top', va='top') plt.text(4, 0, 'bottom', va='bottom') plt.text(6, 0, 'baseline', va='baseline') plt.plot(x, y, c='c') plt.plot(x_b, y_b, c='m') plt.show()
水平对齐选项如下所示:
参数值 |
说明 |
center |
参数坐标相对于文本框的中心 |
left |
参数坐标相对于文本框的左侧 |
right |
参数坐标相对于文本框的右侧 |
importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0, 8, 1000) y=2.0*x+0.5*5*x**2y_b=np.linspace(0, 100, 1000) x_b=np.zeros_like(y_b) plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.scatter(x[0],y[0]) plt.text(0, 0, 'center', ha='center') plt.text(0, 50, 'left', ha='left') plt.text(0, 100, 'right', ha='right') plt.plot(x, y, c='c') plt.plot(x_b, y_b, c='m') plt.show()
文本边界框
上文介绍了文本外围包含隐式文本框,为了可以显式的绘制文本框,plt.plot() 支持一个以字典为输入的 bbox 参数,此词典用于定义文本框的外观配置:
importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0, 8, 1000) y=2.0*x+0.5*5*x**2box= { 'facecolor': '.75', 'edgecolor': 'r', 'boxstyle': 'round'} plt.title('Acceleration Moving') plt.text(0, 8, 'start', bbox=box) plt.plot(x, y, c='c') plt.show()
bbox 参数的字典定义包含以下常见键值对:
键 |
说明与可选值 |
facecolor |
用于设置文本框背景和边的颜色 |
edgecolor |
用于设置文本框边缘的颜色 |
alpha |
用于设置透明度级别,使文本框与背景更好的混合 |
boxstyle |
设置文本框的样式,可选值包括 "round" 和 "square" |
pad |
如果 "boxstyle" 设置为 "square",则它定义文本和文本框边之间的填充量 |