书写数学表达式#

Matplotlib 实现了一个轻量级的 TeX 表达式解析器和布局引擎,Mathtext 是此引擎支持的 Tex 标记的子集.请注意,如果 rcParams["text.usetex"] (default: False) 为 True,Matplotlib 也可以直接使用 TeX 渲染所有文本;有关更多详细信息,请参阅 使用 LaTeX 渲染文本 .如果 rcParams["text.usetex"] (default: False) 为 False,则可以使用 Mathtext 支持.

可以通过将字符串放在一对美元符号 '$' 中,将任何字符串作为 Mathtext 处理.Mathtext 通常包含许多反斜杠 '\' ;为了避免转义反斜杠,通常使用原始字符串编写 Mathtext.例如:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(3, 3), linewidth=1, edgecolor='black')
fig.text(.2, .7, "plain text: alpha > beta")
fig.text(.2, .5, "Mathtext: $\\alpha > \\beta$")
fig.text(.2, .3, r"raw string Mathtext: $\alpha > \beta$")
mathtext

使用 Mathtext 不需要安装 TeX,因为 Matplotlib 附带了 Mathtext 解析器和引擎.Mathtext 布局引擎是对 Donald Knuth 的 TeX 中的布局算法的相当直接的改编.要使用不同的 TeX 引擎渲染数学文本,请参阅 使用 LaTeX 渲染文本 .

备注

要在文档中生成 HTML 输出,使其与 mathtext 生成的输出完全匹配,请使用 matplotlib.sphinxext.mathmpl Sphinx 扩展.

特殊字符#

Mathtext 必须放在一对(美国)美元符号 '$' 之间.包含 Mathtext 的字符串中的文字美元符号 '$' 必须使用反斜杠转义: '\$' .一个字符串可能包含多对美元符号,从而产生多个 Mathtext 表达式.具有奇数个美元符号的字符串仅呈现为纯文本.

fig = plt.figure(figsize=(3, 3), linewidth=1, edgecolor='black')
fig.suptitle("Number of unescaped $")
fig.text(.1, .7, r"odd: $ \alpha $ = $1")
fig.text(.1, .5, r"even: $ \beta $= $ 2 $")
fig.text(.1, .3, r'odd: $ \gamma $= \$3 $')
fig.text(.1, .1, r'even: $ \delta $ = $ \$4 $')
Number of unescaped $

虽然 Mathtext 旨在与常规 TeX 兼容,但在何时需要转义特殊字符方面有所不同.在 TeX 中,美元符号必须在非数学文本中转义 '\$' ,而在 Matplotlib 中,美元符号必须在编写 Mathtext 时转义.

这些其他特殊字符也在非数学 TeX 中转义,而在 Matplotlib 中,它们的行为取决于 rcParams["text.usetex"] (default: False) 的设置方式:

# $ % & ~ _ ^ \ { } \( \) \[ \]

有关更多信息,请参见 usetex tutorial .

下标和上标#

要创建下标和上标,请使用 '_''^' 符号:

r'$\alpha_i > \beta_i$'
\[\alpha_i > \beta_i\]

要正确显示多字母下标或上标,应将其放在花括号 {...} 中:

r'$\alpha^{ic} > \beta_{ic}$'
\[\alpha^{ic} > \beta_{ic}\]

某些符号会自动将其下标/上标放在运算符的上方和下方.例如,要写出 的总和,您可以这样做:

r'$\sum_{i=0}^\infty x_i$'
\[\sum_{i=0}^\infty x_i\]

分数,二项式和堆叠数字#

可以使用 \frac{}{} , \binom{}{}\genfrac{}{}{}{}{}{} 命令分别创建分数,二项式和堆叠数字:

r'$\frac{3}{4} \binom{3}{4} \genfrac{}{}{0}{}{3}{4}$'

生成

\[\frac{3}{4} \binom{3}{4} \genfrac{}{}{0pt}{}{3}{4}\]

分数可以任意嵌套:

r'$\frac{5 - \frac{1}{x}}{4}$'

生成

\[\frac{5 - \frac{1}{x}}{4}\]

请注意,需要特别注意在分数周围放置括号.以显而易见的方式做事会产生太小的括号:

r'$(\frac{5 - \frac{1}{x}}{4})$'
\[(\frac{5 - \frac{1}{x}}{4})\]

解决方案是在括号前加上 \left\right ,以通知解析器这些括号包含整个对象.

r'$\left(\frac{5 - \frac{1}{x}}{4}\right)$'
\[\left(\frac{5 - \frac{1}{x}}{4}\right)\]

根式#

可以使用 \sqrt[]{} 命令生成根式.例如:

r'$\sqrt{2}$'
\[\sqrt{2}\]

任何底数都可以(可选)在方括号内提供.请注意,底数必须是一个简单的表达式,不能包含布局命令,例如分数或下标/上标:

r'$\sqrt[3]{x}$'
\[\sqrt[3]{x}\]

字体#

对于数学符号,默认字体为斜体.

可以使用 rcParams["mathtext.default"] (default: 'it') 更改此默认值.有关设置 rcParams 的信息,请参见 使用样式表和 rcParams 自定义 Matplotlib .例如,将默认值设置为 regular 允许您对数学文本和常规非数学文本使用相同的字体.

要更改字体,例如,要用罗马字体书写"sin",请将文本包含在字体命令中:

r'$s(t) = \mathcal{A}\mathrm{sin}(2 \omega t)$'
\[s(t) = \mathcal{A}\mathrm{sin}(2 \omega t)\]

更方便的是,许多常用的函数名称都有快捷方式,这些名称以罗马字体排版.所以上面的表达式可以写成如下形式:

r'$s(t) = \mathcal{A}\sin(2 \omega t)$'
\[s(t) = \mathcal{A}\sin(2 \omega t)\]

这里"s"和"t"是斜体字体(默认),"sin"是罗马字体,幅度"A"是书法字体.请注意,在上面的示例中,书法体 A 被挤压到 sin 中.您可以使用间距命令在它们之间添加一些空格:

r's(t) = \mathcal{A}\/\sin(2 \omega t)'
\[s(t) = \mathcal{A}\,\sin(2 \omega t)\]

Mathtext 可以使用 DejaVu Sans(默认),DejaVu Serif,来自 (La)TeX 的 Computer Modern 字体,设计用于与 Times 融合的 STIX 字体,或您提供的 Unicode 字体.Mathtext 字体可以通过 rcParams["mathtext.fontset"] (default: 'dejavusans') 选择.

所有字体都可用的选择有:

命令

结果

\mathrm{Roman}

\mathit{Italic}

\mathtt{Typewriter}

\mathcal{CALLIGRAPHY}

当使用 STIX 字体时,您还可以选择:

命令

结果

\mathbb{blackboard}

\mathrm{\mathbb{blackboard}}

\mathfrak{Fraktur}

\mathsf{sansserif}

\mathrm{\mathsf{sansserif}}

\mathbfit{bolditalic}

还有五个全局"字体集"可供选择,可以使用 matplotlibrc 中的 mathtext.fontset 参数选择.

dejavusans :DejaVu Sans
dejavuserif :DejaVu Serif
cm :Computer Modern (TeX)
stix :STIX(设计用于与 Times 融合)
stixsans :STIX sans-serif

此外,您可以使用 \mathdefault{...} 或其别名 \mathregular{...} 来使用 Mathtext 之外的常规文本使用的字体.这种方法有很多限制,最值得注意的是可用的符号要少得多,但它可以使数学表达式与绘图中的其他文本很好地融合.

为了与流行的软件包兼容, \text{...} 可用,并使用 \mathrm{...} 字体,但会保留空格并将 - 呈现为破折号(而不是减号).

自定义字体#

Mathtext 还提供了一种使用自定义字体进行数学运算的方法.这种方法使用起来相当棘手,应该被认为是仅适用于耐心用户的实验性功能.通过将 rcParams["mathtext.fontset"] (default: 'dejavusans') 设置为 custom ,您可以设置以下参数,这些参数控制要为特定数学字符集使用哪个字体文件.

参数

对应于

mathtext.it

\mathit{} 或默认斜体

mathtext.rm

\mathrm{} 罗马(直立)

mathtext.tt

\mathtt{} 打字机(等宽)

mathtext.bf

\mathbf{} 粗体

mathtext.bfit

\mathbfit{} 粗斜体

mathtext.cal

\mathcal{} 书法体

mathtext.sf

\mathsf{} 无衬线

每个参数都应设置为 fontconfig 字体描述符,如 Matplotlib 中的字体 中所定义.所使用的字体应该具有 Unicode 映射,以便找到任何非拉丁字符,例如希腊字符.如果您想使用自定义字体中未包含的数学符号,您可以将 rcParams["mathtext.fallback"] (default: 'cm') 设置为 'cm' , 'stix''stixsans' ,这将导致 Mathtext 系统在使用特定字符在自定义字体中找不到时,使用替代字体中的字符.

请注意,Unicode 中指定的数学字形随着时间的推移而不断发展,并且许多字体可能没有 Mathtext 正确位置的字形.

重音符号#

重音符号命令可以放在任何符号之前,以在其上方添加重音符号.其中一些有长短形式.

命令

结果

\acute a\'a

\bar a

\breve a

\dot a\.a

\ddot a\''a

\dddot a

\ddddot a

\grave a\ a ``

\hat a\^a

\tilde a\~a

\vec a

\overline{abc}

此外,还有两个特殊的重音符号可以自动调整到下方符号的宽度:

命令

结果

\widehat{xyz}

\widetilde{xyz}

在小写字母 i 和 j 上加重音时应小心.请注意,在下面的示例中,使用 \imath 是为了避免 i 上面的额外点:

r"$\hat i\ \ \hat \imath$"
\[\hat i\ \ \hat \imath\]

符号#

你也可以使用大量的TeX符号,如 \infty , \leftarrow , \sum , \int .

小写希腊字母

α \alpha

β \beta

γ \gamma

δ \delta

ε \epsilon

ε \varepsilon

ζ \zeta

η \eta

θ \theta

ϑ \vartheta

ι \iota

κ \kappa

ϰ \varkappa

λ \lambda

μ \mu

ν \nu

ξ \xi

π \pi

ϖ \varpi

ρ \rho

ϱ \varrho

σ \sigma

ς \varsigma

τ \tau

υ \upsilon

χ \chi

ψ \psi

ω \omega

ϕ \phi

φ \varphi

ϝ \digamma

大写希腊字母

Γ \Gamma

Δ \Delta

Θ \Theta

Λ \Lambda

Ξ \Xi

Π \Pi

Σ \Sigma

Υ \Upsilon

Φ \Phi

Ψ \Psi

Ω \Omega

希伯来字母

\daleth

\gimel

\beth

\aleph

拉丁命名字符

Å \AA

Æ \AE

Ð \DH

Ø \O

Þ \Thorn

ß \ss

å \aa

æ \ae

ð \eth

ð \dh

ø \o

þ \thorn

Œ \OE

œ \oe

分隔符

( (

( \leftparen

) \rightparen

) )

. .

/ /

< <

> >

[ [

[ \lbrack

\ \backslash

| \vert

| |

] \rbrack

] ]

{ \{

{ \leftbrace

{ \lbrace

} \rbrace

} \}

} \rightbrace

\Vert

\|

\uparrow

\downarrow

\updownarrow

\Uparrow

\Downarrow

\Updownarrow

\lceil

\rceil

\lfloor

\rfloor

\langle

\rangle

\lgroup

\rgroup

大符号

\prod

\coprod

\sum

\int

\iint

\iiint

\oint

\oiint

\oiiint

\bigwedge

\bigvee

\bigcap

\bigcup

\bigodot

\bigoplus

\bigotimes

\biguplus

\bigsqcup

\iiiint

标准函数名称

Pr \Pr

arccos \arccos

arcsin \arcsin

arctan \arctan

arg \arg

cos \cos

cosh \cosh

cot \cot

coth \coth

csc \csc

deg \deg

det \det

dim \dim

exp \exp

gcd \gcd

hom \hom

inf \inf

ker \ker

lg \lg

lim \lim

liminf \liminf

limsup \limsup

ln \ln

log \log

max \max

min \min

sec \sec

sin \sin

sinh \sinh

sup \sup

tan \tan

tanh \tanh

二元运算符号

*

+ +

- -

± \pm

× \times

÷ \div

\dagger

\ddagger

\mp

\dotplus

\slash

\setminus

\ast

\circ

\bullet

\wedge

\vee

\cap

\cup

\dotminus

\minuscolon

\dotsminusdots

\wr

\cupdot

\uplus

\sqcap

\sqcup

\oplus

\ominus

\otimes

\oslash

\odot

\circledcirc

\circledast

\circleddash

\boxplus

\boxminus

\boxtimes

\boxdot

\unlhd

\unrhd

\intercal

\veebar

\barwedge

\barvee

\diamond

\cdot

\star

\divideontimes

\leftthreetimes

\rightthreetimes

\curlyvee

\curlywedge

\Cap

\Cup

\doublebarwedge

\obar

\bigtriangleup

\rhd

\triangleright

\bigtriangledown

\lhd

\triangleleft

\bigcirc

\boxbar

⨿ \amalg

\merge

关系符号

: :

< <

= \equal

= =

> >

϶ \backepsilon

\dots

\in

\notin

\smallin

\ni

\notsmallowns

\smallowns

\propto

\varpropto

\rightangle

\mid

\nmid

\parallel

\nparallel

\therefore

\because

\ratio

\sim

\backsim

\nsim

\eqsim

\simeq

\nsimeq

\cong

\simneqq

\ncong

\approx

\napprox

\approxeq

\approxident

\backcong

\asymp

\Bumpeq

\bumpeq

\doteq

\doteqdot

\Doteq

\fallingdotseq

\risingdotseq

\coloneq

\eqcolon

\eqcirc

\circeq

\arceq

\wedgeq

\veeeq

\stareq

\triangleeq

\triangleq

\eqdef

\measeq

\questeq

\neq

\ne

\equiv

\nequiv

\Equiv

\leq

\geq

\leqq

\geqq

\lneqq

\gneqq

\ll

\gg

\between

\nless

\ngtr

\nleq

\ngeq

\lesssim

\gtrsim

\nlesssim

\ngtrsim

\lessgtr

\gtrless

\nlessgtr

\ngtrless

\prec

\succ

\preceq

\preccurlyeq

\succeq

\succcurlyeq

\precsim

\succsim

\nprec

\nsucc

\subset

\supset

\nsubset

\nsupset

\subseteq

\supseteq

\nsubseteq

\nsupseteq

\subsetneq

\supsetneq

\sqsubset

\sqsupset

\sqsubseteq

\sqsupseteq

\oequal

\vdash

\dashv

\top

\bot

\rightassert

\models

\vDash

\Vdash

\Vvdash

\rightModels

\nvdash

\nvDash

\nVdash

\nVDash

\scurel

\trianglelefteq

\trianglerighteq

\measuredrightangle

\varlrtriangle

\bowtie

\ltimes

\rtimes

\backsimeq

\Subset

\Supset

\pitchfork

\equalparallel

\lessdot

\gtrdot

\lll

\ggg

\lesseqgtr

\gtreqless

\eqless

\eqgtr

\curlyeqprec

\curlyeqsucc

\npreccurlyeq

\nsucccurlyeq

\nsqsubseteq

\nsqsupseteq

\sqsubsetneq

\sqsupsetneq

\lnsim

\gnsim

\precnsim

\succnsim

\ntriangleleft

\ntriangleright

\ntrianglelefteq

\ntrianglerighteq

\disin

\isins

\varisins

\isindot

\isinobar

\varisinobar

\isinvb

\isinE

\nisd

\nis

\varnis

\niobar

\varniobar

\bagmember

\frown

\smile

\triangle

\blacktriangleright

\triangleright

\vartriangleright

\blacktriangleleft

\triangleleft

\vartriangleleft

\perp

\Join

\leqslant

\geqslant

\lessapprox

\gtrapprox

\lnapprox

\gnapprox

\lesseqqgtr

\gtreqqless

\eqslantless

\eqslantgtr

\precapprox

\succapprox

\precnapprox

\succnapprox

\subseteqq

\supseteqq

\subsetneqq

\supsetneqq

Arrow symbols

箭头符号

\overleftarrow

\overleftrightarrow

\uparrow

\rightarrow

\leftarrow

\downarrow

\to

\updownarrow

\leftrightarrow

\nwarrow

\nearrow

\searrow

\swarrow

\nleftarrow

\nrightarrow

\leftsquigarrow

\rightsquigarrow

\twoheadleftarrow

\twoheaduparrow

\twoheadrightarrow

\twoheaddownarrow

\leftarrowtail

\rightarrowtail

\mapsfrom

\mapsup

\mapsto

\mapsdown

\updownarrowbar

\hookleftarrow

\hookrightarrow

\looparrowleft

\looparrowright

\leftrightsquigarrow

\nleftrightarrow

\downzigzagarrow

\Lsh

\Rsh

\Ldsh

\Rdsh

\curvearrowleft

\curvearrowright

\cwopencirclearrow

\circlearrowleft

\circlearrowright

\leftharpoonup

\leftharpoondown

\upharpoonright

\upharpoonleft

\rightharpoonup

\rightharpoondown

\downharpoonright

\downharpoonleft

\rightleftarrows

\updownarrows

\leftrightarrows

\leftleftarrows

\upuparrows

\rightrightarrows

\downdownarrows

\leftrightharpoons

\rightleftharpoons

\nLeftarrow

\nLeftrightarrow

\nRightarrow

\Uparrow

\Leftarrow

\Downarrow

\Rightarrow

\Updownarrow

\Leftrightarrow

\Nearrow

\Searrow

\Swarrow

\Lleftarrow

\Rrightarrow

\rightzigzagarrow

\leadsto

\barleftarrow

\rightarrowbar

\cupleftarrow

\multimap

\longleftarrow

\longrightarrow

\longleftrightarrow

\Longleftarrow

\Longrightarrow

\Longleftrightarrow

\longmapsto

\dashleftarrow

\dashrightarrow

点符号

\ldots

\therefore

\because

\Colon

\vdots

\cdots

\adots

\ddots

黑板粗体字符

\BbbC

\BbbN

\BbbP

\BbbQ

\BbbR

\BbbZ

脚本字符

\scrg

\scrH

\scrI

\scrL

\scrR

\scrB

\scre

\scrE

\scrF

\scrM

\scro

Fraktur 字符

\frakZ

\frakC

其他符号

$ \$

¢ \cent

£ \sterling

¥ \yen

§ \S

© \copyright

¬ \neg

® \circledR

° \degree

\P

ħ \hbar

ı \imath

ı \i

Ł \L

ł \l

ƛ \lambdabar

ȷ \jmath

\dag

\ddag

\perthousand

\prime

\backprime

\hslash

\Im

\ell

\wp

\Re

\mho

\Finv

\Game

\forall

\complement

\partial

\exists

\nexists

\emptyset

\varnothing

\increment

\nabla

\QED

\infty

\angle

\measuredangle

\sphericalangle

\ac

\sinewave

\hermitmatrix

\circledS

\blacksquare

\triangle

\vartriangle

\blacktriangle

\blacktriangledown

\triangledown

\bigstar

\danger

\spadesuit

\heartsuit

\diamondsuit

\clubsuit

\clubsuitopen

\flat

\natural

\sharp

\checkmark

\maltese

如果某个特定符号没有名称 (对于 STIX 字体中许多不太常见的符号来说是这样),也可以使用 Unicode 字符:

r'$\u23ce$'

Gallery generated by Sphinx-Gallery