赞
踩
文本信息查看:https://matplotlib.org/api/text_api.html#matplotlib.text.Text
1.添加标题:
matplotlib.pyplot.title("<title>"[,**fontdict=None,loc=None,pad=None]):添加标题
#参数说明:None表示默认值来自全局配置
title:指定标题文本;为str
fontdict:指定标题外观;为dict/键值对
#使用键值对时键不为str,使用dict时键为str
默认值为{"fontsize":rcParams["axes.titlesize"],
#即'large'
"fontweight":rcParams["axes.titleweight"],
#即'normal'
"color":rcParams["axes.titlecolor"]
#即'auto'
"verticalalignment":"baseline",
"horizontalalignment":loc}
loc:指定标题横向位置;为str
默认值为rcParams["axes.titlelocation"],即"center"
还可为"left"/"right"
pad:标题距离上边框线的偏移量;为float,单位为磅
默认值为rcParams["axes.titlepad"],即6.0
#pad<0时相当于0
#实例:
>>> import matplotlib.pyplot as plt
>>> x=range(2,26,2)
>>> y=range(0,12)
>>> plt.title('x-y title',pad=20)
Text(0.5, 1.0, 'x-y title')
>>> plt.plot(x, y)
[<matplotlib.lines.Line2D object at 0x0000012CC2D38A88>]
>>> plt.show()
2.为坐标轴添加标签:
matplotlib.pyplot.xlabel("<xlabel>"[,**fontdict=None,labelpad=None]):为x轴添加标签
matplotlib.pyplot.ylabel("<ylabel>"[,**fontdict=None,labelpad=None]):为y轴添加标签
#参数说明:None表示默认值来自全局配置
xlabel,ylabel:指定标签文本;为str
fontdict:指定标签外观;为dict/键值对
#为键值对时键不为str,为dict时键为str
默认值为{"fontsize":rcParams["axes.titlesize"],
#即"large"
"fontweight":rcParams["axes.titleweight"],
#即"normal"
"color":rcParams["axes.titlecolor"],
#即"auto"
"verticalalignment":"baseline",
"horizontalalignment":"center"}
labelpad:标签距离对应坐标轴的偏移量;为float,单位为磅
默认值为rcParams["axes.titlepad"],即6.0
#ylabel在y轴左侧,xlabel在x轴下方;labelpad<0时相当于0
#实例:
>>> import matplotlib.pyplot as plt
>>> x=range(2,26,2)
>>> y=range(0,12)
>>> a=[2,3,1,4,1,3,5,2,3,1,1]
>>> b=[1,2,3,4,5,6,7,8,9,10,11]
>>> plt.title('x-y and a-b title')
Text(0.5, 1.0, 'x-y and a-b title')
>>> plt.xlabel('x label',fontdict={'color':'red'},labelpad=15.0)
Text(0.5, 0, 'x label')
>>> plt.ylabel('y label',color='blue',labelpad=15.0)
Text(0, 0.5, 'y label')
>>> plt.plot(x,y)
[<matplotlib.lines.Line2D object at 0x0000012CC3851088>]
>>> plt.plot(a,b)
[<matplotlib.lines.Line2D object at 0x0000012CC4D29AC8>]
>>> plt.show()
3.添加文本说明:
TextWithDash参考:https://matplotlib.org/api/text_api.html#matplotlib.text.TextWithDash
Text参考:https://matplotlib.org/api/text_api.html#matplotlib.text.Text
(1)添加2D图像的文本说明:
matplotlib.pyplot.text(<x>,<y>,"<text>"[,**fontdict=None,ha="left",va="baseline",withdash=False]):在任意位置添加说明文本
#参数说明:
x,y:指定说明文本的x,y坐标
text:指定说明文本;为str
fontdict:指定说明文本的外观;为dict/键值对
#为键值对时键不为str,为dict时键为str
默认值为{"fontsize":rcParams["axes.titlesize"],
#即"large"
"fontweight":rcParams["axes.titleweight"],
#即"normal"
"color":rcParams["axes.titlecolor"],
#即"auto"
"verticalalignment":"baseline",
"horizontalalignment":"center"}
ha:注释文本的水平相对位置
可为"left"/"right"/"center"
va:注释文本的垂直相对位置
可为"top"/"bottom"/"center"/"baseline"/'center_baseline'
withdash:为True,创建1个TextWithDash实例;为False,创建1个Text实例
#TextWithDash类将在Matplotlib 3.3中被删除
#实例:
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['lines.marker']='o'#设置数据点的形状
>>> a=[5,10,15,20,25,30]
>>> b=[3,4,5,6,7,8]
>>> plt.text(4,3.2,'text1')
Text(4, 3.2, 'text1')
>>> plt.text(9,4.2,'text2')
Text(9, 4.2, 'text2')
>>> plt.text(14,5.2,'text3')
Text(14, 5.2, 'text3')
>>> plt.text(19,6.2,'text4')
Text(19, 6.2, 'text4')
>>> plt.text(24,7.2,'text5')
Text(24, 7.2, 'text5')
>>> plt.text(27.5,7.9,'text6')
Text(27.5, 7.9, 'text6')
>>> plt.title('a-b title')
Text(0.5, 1.0, 'a-b title')
>>> plt.xlabel("x")
Text(0.5, 0, 'x')
>>> plt.ylabel("y")
Text(0, 0.5, 'y')
>>> plt.plot(a,b)
[<matplotlib.lines.Line2D object at 0x0000012CC53D9908>]
>>> plt.show()
matplotlib.pyplot.annotate(<text>,xy=[<x>,<y>],xytext=[<xt>,<yt>],xycoords="data",textcoords=xycoords,ha="left",va="baseline",**arrowprops):功能类似.text(),更高级
#参数说明:其他参数同.text()
x,y:指定被注释的数据点的x,y坐标;为标量
xy,yt:指定说明文本的x,y坐标;默认和x,y相同;为标量
xycoords:指定被注释的数据点的参考系;默认为"data"
可取的值见 表1
textcoords:指定说明文本的坐标点的参考系;默认同xycoords
可取的值见 表2
arrowprops:指定注释箭头(从说明文本指向被注释的数据点)的样式;为dict,键为str
部分可取的键见表3
键arrowstyle可取的值见表4
键connectionstyle的描述见表5,样式见表6
#也可以写为dict(<key>=<value>)的形式,此时key非str
#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x=np.arange(-2*np.pi,2*np.pi,0.01)
>>> y=np.sin(1*x)/x
>>> plt.title("Title")
Text(0.5, 1.0, 'Title')
>>> plt.xlabel('x')
Text(0.5, 0, 'x')
>>> plt.ylabel('y')
Text(0, 0.5, 'y')
>>> plt.plot(x,y)
[<matplotlib.lines.Line2D object at 0x00000208F654C988>]
>>> plt.annotate(r'$\lim_{x\to 0}\frac{\sin(x)}{x}=1$',#LaTeX表达式作为说明文本
... xy=[0,1],#被注释的数据点的坐标
... xycoords='data',#被注释的数据点的坐标的参考系
... xytext=[50,-40],#说明文本的坐标
... textcoords='offset points',#说明文本的坐标的参考系
... fontsize=16,#字体大小
... arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))#箭头样式
#相当于arrowprops={"arrowstyle":"->","connectionstyle":"arc3,rad=.2"})
Text(50, -40, '$\\lim_{x\\to 0}\\frac{\\sin(x)}{x}=1$')
>>> plt.show()
#结果见下图1
表3中的其他键参考:https://matplotlib.org/api/_as_gen/matplotlib.patches.FancyArrowPatch.html#matplotlib.patches.FancyArrowPatch
表5中的其他键参考:
https://matplotlib.org/api/_as_gen/matplotlib.patches.PathPatch.html#matplotlib.patches.PathPatch
(2)添加3D图像的文本说明:
其他参数参见:https://matplotlib.org/api/text_api.html
<ax3d>.text(<x>,<y>,<z>,<s>[,zdir=None,**kwargs])
#参数说明:zdir同<ax3d>.plot()
x,y,z:指定说明文本的x/y/z坐标
s:指定要添加的文本
#实例:
>>> import matplotlib.pyplot as plt
>>> fig=plt.figure()
>>> ax=fig.gca(projection='3d')
>>> zdirs=(None,'x','y','z',(1,1,0),(1,1,1))
>>> xs=(1,4,4,9,4,1)
>>> ys=(2,5,8,10,1,2)
>>> zs=(10,3,8,9,1,8)
>>> for zdir,x,y,z in zip(zdirs,xs,ys,zs):
... label='(%d,%d,%d),dir=%s'%(x,y,z,zdir)
... ax.text(x,y,z,label,zdir)
...
Text(1, 2, '(1,2,10),dir=None')
Text(4, 5, '(4,5,3),dir=x')
Text(4, 8, '(4,8,8),dir=y')
Text(9, 10, '(9,10,9),dir=z')
Text(4, 1, '(4,1,1),dir=(1, 1, 0)')
Text(1, 2, '(1,2,8),dir=(1, 1, 1)')
>>> ax.text(9,0,0,"red",color='red')
Text(9, 0, 'red')
>>> ax.text2D(0.05,0.95,"2D Text",transform=ax.transAxes)
Text(0.05, 0.95, '2D Text')
>>> ax.set_xlim(0, 10)
(0.0, 10.0)
>>> ax.set_ylim(0, 10)
(0.0, 10.0)
>>> ax.set_zlim(0, 10)
(0.0, 10.0)
>>> plt.show()#结果见下图
4.LaTeX的使用:
参见:https://matplotlib.org/tutorials/text/mathtext.html
LaTeX是1种基于TeX的排版系统,常用于生成复杂表格和数学公式
Matplotlib提供自己的TeX表达式解析器/布局引擎/字体
布局引擎基于 Donald Knuth的TeX布局算法改编而来
格式:$<LaTeX>$
#实例:
import numpy as np
import matplotlib.pyplot as plt
>>> t=np.arange(0.0,2.0,0.01)
>>> s=np.sin(2*np.pi*t)
>>> plt.title(r'$\alpha_i > \beta_i$',fontsize=20)
>>> plt.text(1,-0.6,r'$\sum_{i=0}^\infty x_i$',fontsize=20)
>>> plt.text(0.6,0.6,r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',fontsize=20)
>>> plt.xlabel('time (s)')
>>> plt.ylabel('volts (mV)')
>>> plt.plot(t,s)
>>> plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。