备注
前往结尾 下载完整示例代码。
书写数学表达式#
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 不需要安装 TeX,因为 Matplotlib 自带 Mathtext 解析器和引擎。Mathtext 布局引擎是对 Donald Knuth 的 TeX 布局算法的直接改编。要使用不同的 TeX 引擎渲染数学文本,请参阅 使用 LaTeX 进行文本渲染。
备注
要在文档中生成与 mathtext 生成的输出完全匹配的 html 输出,请使用 matplotlib.sphinxext.mathmpl Sphinx 扩展。
特殊字符#
数学文本必须放置在一对美元符号 '$' 之间。字符串中的文字美元符号 '$' 必须使用反斜杠进行转义:'\$'。一个字符串可以包含多对美元符号,从而形成多个数学文本表达式。包含奇数个美元符号的字符串将仅作为纯文本呈现。
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 $')

虽然 Mathtext 旨在与常规 TeX 兼容,但在需要转义特殊字符的情况下有所不同。在 TeX 中,美元符号在非数学文本中必须转义为 '\$',而在 Matplotlib 中,在编写 Mathtext 时必须转义美元符号。
这些其他特殊字符在非数学的 TeX 中也会被转义,而在 Matplotlib 中,它们的行为取决于 rcParams["text.usetex"] (default: False) 的设置:
# $ % & ~ _ ^ \ { } \( \) \[ \]
更多信息请参见 usetex 教程。
下标和上标#
要创建下标和上标,请使用 '_' 和 '^' 符号:
r'$\alpha_i > \beta_i$'
要正确显示多字母的下标或上标,应将它们放在花括号 {...} 中:
r'$\alpha^{ic} > \beta_{ic}$'
一些符号会自动将其上下标置于操作符的上方和下方。例如,要写出从
到
的
的和,你可以这样做:
r'$\sum_{i=0}^\infty x_i$'
分数、二项式和堆叠数字#
分数、二项式和堆叠数字可以通过 \frac{}{}, \binom{}{} 和 \genfrac{}{}{}{}{}{} 命令分别创建:
r'$\frac{3}{4} \binom{3}{4} \genfrac{}{}{0}{}{3}{4}$'
生成
分数可以任意嵌套:
r'$\frac{5 - \frac{1}{x}}{4}$'
生成
需要注意的是,在分数周围放置括号和方括号时需要特别小心。用显而易见的方式做会产生太小的方括号:
r'$(\frac{5 - \frac{1}{x}}{4})$'
解决方案是在括号前加上 \left 和 \right,以告知解析器这些括号包含整个对象。:
r'$\left(\frac{5 - \frac{1}{x}}{4}\right)$'
部首#
根号可以使用 \sqrt[]{} 命令生成。例如:
r'$\sqrt{2}$'
任何基数都可以(可选地)在方括号内提供。请注意,基数必须是一个简单的表达式,不能包含分数或上下标等布局命令:
r'$\sqrt[3]{x}$'
字体#
默认字体为数学符号的*斜体*。
可以使用 rcParams["mathtext.default"] (default: 'it') 更改此默认设置。有关设置 rcParams 的信息,请参阅 使用样式表和rcParams自定义Matplotlib。例如,将默认设置为 regular 允许您对数学文本和常规非数学文本使用相同的字体。
要更改字体,例如将“sin”写成罗马字体,请将文本包含在字体命令中:
r'$s(t) = \mathcal{A}\mathrm{sin}(2 \omega t)$'
更方便的是,许多常用函数名在罗马字体中排版时都有快捷方式。因此,上述表达式可以写成如下:
r'$s(t) = \mathcal{A}\sin(2 \omega t)$'
这里,“s”和“t”是斜体字体(默认)的变量,“sin”是罗马字体,而振幅“A”是书法字体。注意在上面的例子中,书法字体的 A 被压缩进了 sin 中。你可以使用间距命令在它们之间添加一些空白:
r's(t) = \mathcal{A}\/\sin(2 \omega t)'
Mathtext 可以使用 DejaVu Sans(默认)、DejaVu Serif、(La)TeX 中的 Computer Modern 字体、STIX 字体(这些字体设计用于与 Times 字体很好地融合),或者您提供的 Unicode 字体。Mathtext 字体可以通过 rcParams["mathtext.fontset"] (default: 'dejavusans') 进行选择。
所有字体可用的选项包括:
命令 |
结果 |
|---|---|
|
|
|
|
|
|
|
|
在使用 STIX 字体时,您还可以选择:
命令 |
结果 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
还有五种全局“字体集”可供选择,这些字体集通过 matplotlibrc 中的 mathtext.fontset 参数进行选择。
dejavusans: DejaVu Sans
dejavuserif: DejaVu Serif
cm: 计算机现代 (TeX)
stix: STIX (设计与Times字体融合良好)
stixsans: STIX 无衬线字体
此外,你可以使用 \mathdefault{...} 或其别名 \mathregular{...} 来使用 Mathtext 之外用于常规文本的字体。这种方法有许多限制,最明显的是可用的符号要少得多,但它对于使数学表达式与图中的其他文本很好地融合非常有用。
为了与流行的包兼容,\text{...} 是可用的,并使用 \mathrm{...} 字体,但保留空格并以破折号(不是减号)呈现 -。
自定义字体#
Mathtext 还提供了一种使用自定义字体进行数学表达的方法。这种方法使用起来相当棘手,应仅被视为有耐心的用户的实验性功能。通过将 rcParams["mathtext.fontset"] (default: 'dejavusans') 设置为 custom,您可以设置以下参数,这些参数控制使用哪个字体文件来表示特定的数学字符集。
参数 |
对应于 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
每个参数应设置为一个 fontconfig 字体描述符,如 Matplotlib 中的字体 中所定义。使用的字体应具有 Unicode 映射,以便查找任何非拉丁字符,例如希腊字母。如果你想使用一个不在自定义字体中的数学符号,你可以将 rcParams["mathtext.fallback"] (default: 'cm') 设置为 'cm'、'stix' 或 'stixsans',这将导致 Mathtext 系统在自定义字体中找不到特定字符时使用替代字体中的字符。
请注意,Unicode 中指定的数学字形随着时间的推移已经发生了变化,许多字体可能没有正确位置的字形供 Mathtext 使用。
重音#
一个重音命令可以在任何符号前加上,以在该符号上方添加重音。其中一些有长形式和短形式。
命令 |
结果 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
此外,还有两种特殊重音符号,它们会自动调整以适应其下方符号的宽度:
命令 |
结果 |
|---|---|
|
|
|
|
在给小写的i和j加上重音时,应特别注意。请注意,在以下示例中,使用 \imath 以避免i上多余的点:
r"$\hat i\ \ \hat \imath$"
符号#
你也可以使用大量的TeX符号,例如 \infty、 \leftarrow、 \sum、 \int。
小写希腊字母
α |
β |
γ |
δ |
ε |
ε |
ζ |
η |
θ `` heta`` |
ϑ |
ι |
κ |
ϰ |
λ |
μ |
ν `` u`` |
ξ |
π |
ϖ |
ρ `` ho`` |
ϱ |
σ |
ς |
τ `` au`` |
υ |
χ |
ψ |
ω |
ϕ |
φ |
ϝ |
大写希腊字母
Γ |
Δ |
Θ |
Λ |
Ξ |
Π |
Σ |
Υ |
Φ |
Ψ |
Ω |
希伯来语
ℸ |
ℷ |
ℶ |
ℵ |
拉丁命名字符
Å |
Æ |
Ð |
Ø |
Þ |
ß |
å |
æ |
ð |
ð |
ø |
|
Œ |
œ |
分隔符
( |
( |
|
|
|
/ |
< |
|
[ ``[ |
[ |
|
| |
| |
|
|
{ |
|
{ |
} `` ightbrace`` |
} |
} `` brace`` |
‖ |
‖ |
↑ |
↓ |
↕ |
⇑ |
⇓ |
⇕ |
⌈ |
⌉ `` ceil`` |
⌊ |
⌋ `` floor`` |
⟨ |
|
⟮ |
|
大符号
∏ |
∐ |
∑ |
∫ |
∬ |
∭ |
∮ |
∯ |
∰ |
⋀ |
⋁ |
⋂ |
⋃ |
⨀ |
⨁ |
⨂ |
⨄ |
⨆ |
⨌ |
标准函数名称
Pr |
arccos |
反正弦 |
反正切 |
参数 |
余弦 |
双曲余弦 |
余切 |
coth |
csc |
度 |
det |
维度 |
指数 |
最大公约数 |
同态 |
inf |
核 |
lg |
极限 |
下极限 |
上极限 |
ln |
日志 |
最大值 |
最小值 |
节 |
正弦 |
双曲正弦 |
上确界 |
tan `` an`` |
双曲正切 `` anh`` |
二元操作符号
|
|
|
± |
× `` imes`` |
|
† |
‡ |
− |
∓ |
|
∕ |
∖ |
∗ |
∘ |
∙ |
∧ |
∨ |
∩ |
∪ |
∸ |
|
|
≀ |
⊍ |
⊎ |
⊓ |
⊔ |
⊕ |
⊖ |
⊗ |
⊘ |
⊙ |
⊚ |
⊛ |
⊝ |
⊞ |
⊟ |
⊠ |
⊡ |
⊴ |
⊵ |
|
⊻ |
⊼ |
⊽ |
⋄ |
⋅ |
⋆ |
⋇ |
⋋ |
⋌ `` ightthreetimes`` |
|
⋏ |
⋒ |
⋓ |
⌆ |
⌽ |
△ |
▷ `` hd`` |
▷ `` riangleright`` |
▽ |
◁ |
◁ `` riangleleft`` |
○ |
◫ |
⨿ |
⩕ |
关系符号
|
< |
= |
= |
|
϶ |
… |
∈ |
∉ `` otin`` |
∊ |
∋ `` i`` |
∌ `` otsmallowns`` |
|
∝ |
∝ |
∟ `` ightangle`` |
∣ |
∤ `` mid`` |
∥ |
∦ `` parallel`` |
∴ `` herefore`` |
∵ |
∶ |
∼ |
∽ |
≁ `` sim`` |
≂ |
≃ |
≄ `` simeq`` |
≅ |
≆ |
≇ `` cong`` |
≈ |
≉ `` approx`` |
≊ |
≋ |
≌ |
≍ |
≎ |
≏ |
≐ |
≑ |
≑ |
≒ |
≓ `` isingdotseq`` |
≔ |
≕ |
≖ |
≗ |
≘ |
≙ |
≚ |
≛ |
≜ `` riangleeq`` |
≜ `` riangleq`` |
≝ |
|
≟ |
≠ `` eq`` |
≠ `` e`` |
≡ |
≢ `` equiv`` |
≣ |
≤ |
≥ |
≦ |
≧ |
|
≩ |
≪ |
≫ |
≬ |
≮ `` less`` |
≯ `` gtr`` |
≰ `` leq`` |
≱ `` geq`` |
≲ |
≳ |
≴ `` lesssim`` |
≵ `` gtrsim`` |
|
≷ |
≸ `` lessgtr`` |
|
≺ |
≻ |
≼ |
≼ |
≽ |
≽ |
≾ |
≿ |
⊀ `` prec`` |
|
⊂ |
⊃ |
⊄ `` subset`` |
⊅ `` supset`` |
⊆ |
⊇ |
⊈ `` subseteq`` |
⊉ `` supseteq`` |
⊊ |
⊋ |
⊏ |
⊐ |
⊑ |
⊒ |
⊜ |
⊢ |
⊣ |
⊤ `` op`` |
⊥ |
⊦ `` ightassert`` |
⊧ |
⊨ |
⊩ |
⊪ |
⊫ `` ightModels`` |
⊬ `` vdash`` |
⊭ `` vDash`` |
⊮ `` Vdash`` |
⊯ `` VDash`` |
|
⊴ `` rianglelefteq`` |
⊵ `` rianglerighteq`` |
⊾ |
⊿ |
⋈ |
⋉ |
|
⋍ |
⋐ |
⋑ |
⋔ |
⋕ |
⋖ |
|
⋘ “lll” |
|
⋚ |
⋛ |
⋜ |
|
⋞ |
⋟ |
⋠ `` preccurlyeq`` |
⋡ `` succcurlyeq`` |
⋢ `` sqsubseteq`` |
⋣ `` sqsupseteq`` |
⋤ |
⋥ |
⋦ |
⋧ |
⋨ |
⋩ |
⋪ `` triangleleft`` |
⋫ `` triangleright`` |
⋬ `` trianglelefteq`` |
⋭ `` trianglerighteq`` |
⋲ |
⋴ |
⋳ |
⋵ |
⋷ |
⋶ |
⋸ |
⋹ |
⋺ `` isd`` |
⋼ `` is`` |
⋻ |
⋾ `` iobar`` |
⋽ |
|
⌢ |
⌣ |
△ `` riangle`` |
▶ |
▷ `` riangleright`` |
⊳ |
◀ |
◁ `` riangleleft`` |
⊲ |
⟂ |
⨝ |
⩽ |
⩾ |
⪅ |
⪆ |
⪉ |
⪊ |
⪋ |
⪌ |
⪕ |
⪖ |
⪷ |
⪸ |
⪹ |
⪺ |
⫅ |
⫆ |
⫋ |
⫌ |
箭头符号
⃖ |
|
← |
↑ |
→ `` o`` |
→ `` ightarrow`` |
↓ |
↔ |
↕ |
↖ `` warrow`` |
↗ `` earrow`` |
↘ |
↙ |
↚ `` leftarrow`` |
↛ `` rightarrow`` |
↜ |
↝ `` ightsquigarrow`` |
↞ `` woheadleftarrow`` |
↟ `` woheaduparrow`` |
↠ `` woheadrightarrow`` |
↡ `` woheaddownarrow`` |
↢ |
↣ `` ightarrowtail`` |
↤ |
↥ |
↦ |
↧ |
↨ |
↩ |
↪ |
↫ |
↬ |
↭ |
↮ `` leftrightarrow`` |
↯ |
|
|
|
|
↶ |
|
↺ |
↻ |
↻ |
|
|
|
↿ |
⇀ `` ightharpoonup`` |
|
|
⇃ |
⇄ `` ightleftarrows`` |
⇅ |
⇆ |
⇇ |
⇈ |
⇉ `` ightrightarrows`` |
⇊ |
⇋ |
⇌ `` ightleftharpoons`` |
|
⇎ `` Leftrightarrow`` |
⇏ `` Rightarrow`` |
⇐ |
⇑ |
⇒ |
⇓ |
⇔ |
⇕ |
⇖ |
⇗ |
⇘ |
⇙ |
⇚ |
⇛ |
⇝ |
⇝ |
⇤ |
|
⊌ |
|
⟵ |
⟶ |
⟷ |
⟸ |
⟹ |
⟺ |
⟼ |
⤎ |
⤏ |
点符号
… |
∴ `` herefore`` |
∵ |
∷ |
|
⋯ |
⋰ |
⋱ |
黑板字符
ℂ |
ℕ |
ℙ |
ℚ |
ℝ |
ℤ |
脚本角色
ℊ |
ℋ |
ℐ |
ℒ |
ℛ |
ℬ |
ℯ |
ℰ |
ℱ |
ℳ |
ℴ |
Fraktur 字符
ℨ |
ℭ |
杂项符号
$ |
¢ |
£ |
¥ |
§ |
© |
¬ `` eg`` |
® |
° |
¶ |
ħ |
ı |
ı |
Ł |
ł |
ƛ |
ȷ |
† |
‡ |
‰ |
′ |
‵ |
ℏ |
ℑ |
ℓ |
℘ |
ℜ |
℧ |
Ⅎ |
⅁ |
∀ |
∁ |
∂ |
∃ |
∄ `` exists`` |
∅ |
∅ |
∆ |
∇ `` abla`` |
∎ |
∞ |
∠ |
∡ |
∢ |
∾ |
∿ |
⊹ |
Ⓢ |
■ |
△ `` riangle`` |
▵ |
▴ |
▾ |
▿ `` riangledown`` |
★ |
☡ |
♠ |
♡ |
♢ |
♣ |
♧ |
♭ |
♮ `` atural`` |
♯ |
✓ |
✠ |
如果某个特定符号没有名称(如STIX字体中的许多更晦涩符号),也可以使用Unicode字符:
r'$\u23ce$'























