欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python Matplotlib模块 文本描述

程序员文章站 2022-04-25 19:12:40
...

文本信息查看:
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()

Python Matplotlib模块 文本描述
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()

Python Matplotlib模块 文本描述
3.添加文本说明:
TextWithDash参考:
https://matplotlib.org/api/text_api.html#matplotlib.text.TextWithDash
Text参考:
https://matplotlib.org/api/text_api.html#matplotlib.text.Text

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()

Python Matplotlib模块 文本描述

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

Python Matplotlib模块 文本描述
Python Matplotlib模块 文本描述
Python Matplotlib模块 文本描述
表3中的其他键参考:https://matplotlib.org/api/_as_gen/matplotlib.patches.FancyArrowPatch.html#matplotlib.patches.FancyArrowPatch
Python Matplotlib模块 文本描述
Python Matplotlib模块 文本描述
Python Matplotlib模块 文本描述
表5中的其他键参考:
https://matplotlib.org/api/_as_gen/matplotlib.patches.PathPatch.html#matplotlib.patches.PathPatch
Python Matplotlib模块 文本描述
Python Matplotlib模块 文本描述
Python Matplotlib模块 文本描述
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()

Python Matplotlib模块 文本描述