暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python数据可视化--添加注释文本

AI小白笔记 2021-11-10
2766

点击蓝字

关注我们

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


带箭头的是指向性的注释,没有箭头的是无指向性的注释,下面进行一一介绍。


无指向性的注释


无指向性的注释使用以下函数:

plt.text(x,y,string,fontsize,color)

各参数涵义如下:

x:文本在坐标系中x轴坐标值

y:文本在坐标系中y轴坐标值

text:文本内容

fontsize:文本的字号大小

color:文本颜色


import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family']=['KaiTi']    #设置中文字体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号


x=np.linspace(-3,3,100)
y1=x**2
y2=x


plt.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 np
import matplotlib.pyplot as plt
plt.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 plt 
import numpy as np
import math
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.rcParams['font.family']=['KaiTi']    #设置中文字体


plt.figure(figsize=(7,7))
x1=np.linspace(-2,2,200)
y1=math.e**x1
x2=np.linspace(-2,2.2,200)
y2=1+x2+x2**2/2+x2**3/6
x3=np.linspace(-2,2.6,200)
y3=1+x3+x3**2/2
x4=np.linspace(-2,3.3,200)
y4=1+x4


plt.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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论