点击蓝字
关注我们
有时候在绘制图形时需要在坐标系里添加注释文本,注释文本一般分为无指向性的注释与有指向性的注释。下图是在《高等数学》下册里找出来的一张函数图像。

带箭头的是指向性的注释,没有箭头的是无指向性的注释,下面进行一一介绍。
无指向性的注释
无指向性的注释使用以下函数:
plt.text(x,y,string,fontsize,color)
各参数涵义如下:
x:文本在坐标系中x轴坐标值
y:文本在坐标系中y轴坐标值
text:文本内容
fontsize:文本的字号大小
color:文本颜色
import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.family']=['KaiTi'] #设置中文字体plt.rcParams['axes.unicode_minus']=False #用来正常显示负号x=np.linspace(-3,3,100)y1=x**2y2=xplt.plot(x,y1)plt.plot(x,y2)plt.text(-2,4,'二次函数',fontsize=15,color='red')plt.text(2,1.3,'线性函数',fontsize=15,color='green')plt.show()

有指向性的注释文本
有指向性的注释文本使用以下函数:
plt.annotate(string,xy,xytext,arrowprops,fontsize,color)
各参数涵义如下:
string:文本内容
xy:箭头指向的坐标位置
xytext:文本所在的坐标位置
arrowprops:箭头属性,为字典类型
fontsize:文本的字号大小
color:文本颜色
import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.family']=['KaiTi'] #设置中文字体plt.rcParams['axes.unicode_minus']=False #用来正常显示负号x=np.linspace(0,2*np.pi,100)y=np.sin(x)plt.plot(x,y)plt.annotate('最大值',xy=(np.pi/2,1),xytext=(1,0.5),arrowprops=dict(arrowstyle='->'),color='r',fontsize=15)plt.annotate('最小值',xy=(3*np.pi/2,-1),xytext=(4.4,-0.75),arrowprops=dict(arrowstyle='->'),color='purple',fontsize=15)plt.show()

以上为指向性注释文本最简单的使用形式,plt.annotate()函数更复杂的用法明天再讲解。
接下来写一段代码,绘制本文第一张图,即四个函数的图像:
注释文本综合实例
import matplotlib.pyplot as pltimport numpy as npimport mathplt.rcParams['axes.unicode_minus']=False #用来正常显示负号plt.rcParams['font.family']=['KaiTi'] #设置中文字体plt.figure(figsize=(7,7))x1=np.linspace(-2,2,200)y1=math.e**x1x2=np.linspace(-2,2.2,200)y2=1+x2+x2**2/2+x2**3/6x3=np.linspace(-2,2.6,200)y3=1+x3+x3**2/2x4=np.linspace(-2,3.3,200)y4=1+x4plt.plot(x1,y1)plt.plot(x2,y2,ls='--')plt.plot(x3,y3,ls='--')plt.plot(x4,y4,ls='--')plt.xlim(-2,4)ax=plt.gca()ax.spines['right'].set_color('none') #隐藏右边的边界线ax.spines['top'].set_color('none') #隐藏顶部的边界线ax.spines['bottom'].set_position(('data',0))ax.spines['left'].set_position(('data',0))plt.annotate(r'$y=1+x+\frac{x^{2}}{2}$',(2.5,6),xytext=(3,6),arrowprops=dict(arrowstyle='->'),fontsize=15)plt.annotate(r'$y=1+x+\frac{x^{2}}{2}+\frac{x^{3}}{6}$',(2.2,7.3),xytext=(2.6,7.3),arrowprops=dict(arrowstyle='->'),fontsize=15)plt.text(1.6,7,r'$e^{x}$',fontsize=15)plt.text(3,3.5,r'$y=1+x$',fontsize=15)plt.show()

第29-32行显示注释文本时使用了LaTex语法,这是一种常见的排版系统,在显示数学公式方面非常方便,这种排版方式不用专门学习,有很多在线数学公式生成的网站,输入公式便会自动生成LaTex语法,复制过来即可。
对LaTex有兴趣可移步以下链接:
LaTex在线:https://latex.91maths.com/
THE END
文章转载自AI小白笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




