书写数学表达式#

Matplotlib 实现了一个轻量级的 TeX 表达式解析器和布局引擎,Mathtext 是该引擎支持的 Tex 标记的子集。请注意,如果 rcParams["text.usetex"] (默认值: False) 为 True,Matplotlib 也可以直接使用 TeX 渲染所有文本;有关更多详细信息,请参阅 使用 LaTeX 进行文本渲染。如果 rcParams["text.usetex"] (默认值: 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 才能使用 Mathtext,因为 Matplotlib 附带了 Mathtext 解析器和引擎。Mathtext 布局引擎是对 Donald Knuth 的 TeX 中的布局算法的直接改编。要使用不同的 TeX 引擎渲染数学文本,请参阅 使用 LaTeX 进行文本渲染

注意

要在文档中生成与 mathtext 生成的输出完全匹配的 html 输出,请使用 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"] (默认值: False) 的设置方式。

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

有关更多信息,请参阅 usetex 教程

下标和上标#

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

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"] (默认值: '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 字体、STIX 字体(旨在与 Times 字体很好地融合),或者您提供的 Unicode 字体。可以通过 rcParams["mathtext.fontset"] (默认值: 'dejavusans') 选择 Mathtext 字体。

所有字体可用的选项为

命令

结果

\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"](默认值:'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"](默认值:'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

] ]

{ \{

{ \lbrace

{ \leftbrace

} \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

\triangleq

\triangleeq

\eqdef

\measeq

\questeq

\ne

\neq

\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

箭头符号

\overleftarrow

\overleftrightarrow

\leftarrow

\uparrow

\to

\rightarrow

\downarrow

\leftrightarrow

\updownarrow

\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

\circlearrowleft

\cwopencirclearrow

\circlearrowright

\leftharpoonup

\leftharpoondown

\upharpoonright

\upharpoonleft

\rightharpoonup

\rightharpoondown

\downharpoonright

\downharpoonleft

\rightleftarrows

\updownarrows

\leftrightarrows

\leftleftarrows

\upuparrows

\rightrightarrows

\downdownarrows

\leftrightharpoons

\rightleftharpoons

\nLeftarrow

\nLeftrightarrow

\nRightarrow

\Leftarrow

\Uparrow

\Rightarrow

\Downarrow

\Leftrightarrow

\Updownarrow

\Nwarrow

\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

哥特体字符

\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$'

此图库由 Sphinx-Gallery 生成。