注意
转到末尾 下载完整示例代码。
编写数学表达式#
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 无需安装 TeX,因为 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 $')

虽然 Mathtext 旨在与常规 TeX 兼容,但在特殊字符何时需要转义方面存在差异。在 TeX 中,美元符号 '\$'
在非数学文本中必须转义,而在 Matplotlib 中,在编写 Mathtext 时美元符号必须转义。
这些其他特殊字符在非数学 TeX 中也需要转义,而在 Matplotlib 中,它们的行为取决于 rcParams["text.usetex"]
(默认值: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"]
(默认值:'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 字体,与 Times 字体融合良好的 STIX 字体,或者您提供的 Unicode 字体。Mathtext 字体可以通过 rcParams["mathtext.fontset"]
(默认值:'dejavusans'
)选择。
所有字体可用的选择是
命令 |
结果 |
---|---|
|
|
|
|
|
|
|
使用 STIX 字体时,您还可以选择
命令 |
结果 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
此外,还有五种全局“字体集”可供选择,这些字体集是使用 matplotlibrc 中的 mathtext.fontset
参数选择的。
dejavusans
: DejaVu Sansdejavuserif
: DejaVu Serifcm
: Computer Modern (TeX)stix
: STIX (旨在与 Times 字体良好融合)stixsans
: STIX 无衬线字体
此外,您可以使用 \mathdefault{...}
或其别名 \mathregular{...}
来使用 Mathtext 之外的常规文本所用的字体。这种方法存在一些限制,最显著的是可用的符号会少得多,但它有助于使数学表达式与绘图中的其他文本良好融合。
为了与流行包兼容,\text{...}
可用并使用 \mathrm{...}
字体,但它会保留空格并将 - 渲染为破折号(而非减号)。
自定义字体#
Mathtext 还提供了一种为数学使用自定义字体的方法。这种方法使用起来相当棘手,应仅将其视为面向耐心用户的实验性功能。通过将 rcParams["mathtext.fontset"]
(默认值:'dejavusans'
)设置为 custom
,您可以设置以下参数,这些参数控制用于特定数学字符集的字体文件。
参数 |
对应于 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
每个参数都应设置为 fontconfig 字体描述符,具体定义请参见 Matplotlib 中的字体。所使用的字体应具有 Unicode 映射,以便查找任何非拉丁字符,例如希腊字符。如果您想使用自定义字体中不包含的数学符号,可以将 rcParams["mathtext.fallback"]
(默认值:'cm'
)设置为 'cm'
、'stix'
或 'stixsans'
,这将导致 Mathtext 系统在自定义字体中找不到特定字符时使用备用字体中的字符。
请注意,Unicode 中指定的数学字形随着时间推移而演变,许多字体可能没有将字形放置在 Mathtext 所要求的正确位置。
重音符号#
重音符号命令可以放在任何符号之前,以在其上方添加重音。其中一些有长格式和短格式。
命令 |
结果 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
此外,还有两种特殊重音符号,它们会自动调整以适应下方符号的宽度
命令 |
结果 |
---|---|
|
|
|
在小写字母 i 和 j 上添加重音符号时应小心。请注意,在以下示例中,使用 \imath
是为了避免 i 上方的额外点。
r"$\hat i\ \ \hat \imath$"
符号#
您还可以使用大量的 TeX 符号,例如 \infty
、\leftarrow
、\sum
、\int
。
小写希腊字母
α |
β |
γ |
δ |
ε |
ε |
ζ |
η |
θ |
ϑ |
ι |
κ |
ϰ |
λ |
μ |
ν |
ξ |
π |
ϖ |
ρ |
ϱ |
σ |
ς |
τ |
υ |
χ |
ψ |
ω |
ϕ |
φ |
ϝ |
大写希腊字母
Γ |
Δ |
Θ |
Λ |
Ξ |
Π |
Σ |
Υ |
Φ |
Ψ |
Ω |
希伯来语
ℸ |
ℷ |
ℶ |
ℵ |
拉丁命名字符
Å |
Æ |
Ð |
Ø |
Þ |
ß |
å |
æ |
ð |
ð |
ø |
þ |
Œ |
œ |
分隔符
( |
( |
) |
) |
. |
/ |
< |
> |
[ |
[ |
\ |
| |
| |
] |
] |
{ |
{ |
{ |
} |
} |
} |
‖ |
‖ |
↑ |
↓ |
↕ |
⇑ |
⇓ |
⇕ |
⌈ |
⌉ |
⌊ |
⌋ |
⟨ |
⟩ |
⟮ |
⟯ |
大符号
∏ |
∐ |
∑ |
∫ |
∬ |
∭ |
∮ |
∯ |
∰ |
⋀ |
⋁ |
⋂ |
⋃ |
⨀ |
⨁ |
⨂ |
⨄ |
⨆ |
⨌ |
标准函数名称
Pr |
arccos |
arcsin |
arctan |
arg |
cos |
cosh |
cot |
coth |
csc |
deg |
det |
dim |
exp |
gcd |
hom |
inf |
ker |
lg |
lim |
liminf |
limsup |
ln |
log |
max |
min |
sec |
sin |
sinh |
sup |
tan |
tanh |
二元运算符
* |
+ |
- |
± |
× |
÷ |
† |
‡ |
− |
∓ |
∔ |
∕ |
∖ |
∗ |
∘ |
∙ |
∧ |
∨ |
∩ |
∪ |
∸ |
∹ |
∺ |
≀ |
⊍ |
⊎ |
⊓ |
⊔ |
⊕ |
⊖ |
⊗ |
⊘ |
⊙ |
⊚ |
⊛ |
⊝ |
⊞ |
⊟ |
⊠ |
⊡ |
⊴ |
⊵ |
⊺ |
⊻ |
⊼ |
⊽ |
⋄ |
⋅ |
⋆ |
⋇ |
⋋ |
⋌ |
⋎ |
⋏ |
⋒ |
⋓ |
⌆ |
⌽ |
△ |
▷ |
▷ |
▽ |
◁ |
◁ |
○ |
◫ |
⨿ |
⩕ |
关系符号
: |
< |
= |
= |
> |
϶ |
… |
∈ |
∉ |
∊ |
∋ |
∌ |
∍ |
∝ |
∝ |
∟ |
∣ |
∤ |
∥ |
∦ |
∴ |
∵ |
∶ |
∼ |
∽ |
≁ |
≂ |
≃ |
≄ |
≅ |
≆ |
≇ |
≈ |
≉ |
≊ |
≋ |
≌ |
≍ |
≎ |
≏ |
≐ |
≑ |
≑ |
≒ |
≓ |
≔ |
≕ |
≖ |
≗ |
≘ |
≙ |
≚ |
≛ |
≜ |
≜ |
≝ |
≞ |
≟ |
≠ |
≠ |
≡ |
≢ |
≣ |
≤ |
≥ |
≦ |
≧ |
≨ |
≩ |
≪ |
≫ |
≬ |
≮ |
≯ |
≰ |
≱ |
≲ |
≳ |
≴ |
≵ |
≶ |
≷ |
≸ |
≹ |
≺ |
≻ |
≼ |
≼ |
≽ |
≽ |
≾ |
≿ |
⊀ |
⊁ |
⊂ |
⊃ |
⊄ |
⊅ |
⊆ |
⊇ |
⊈ |
⊉ |
⊊ |
⊋ |
⊏ |
⊐ |
⊑ |
⊒ |
⊜ |
⊢ |
⊣ |
⊤ |
⊥ |
⊦ |
⊧ |
⊨ |
⊩ |
⊪ |
⊫ |
⊬ |
⊭ |
⊮ |
⊯ |
⊱ |
⊴ |
⊵ |
⊾ |
⊿ |
⋈ |
⋉ |
⋊ |
⋍ |
⋐ |
⋑ |
⋔ |
⋕ |
⋖ |
⋗ |
⋘ |
⋙ |
⋚ |
⋛ |
⋜ |
⋝ |
⋞ |
⋟ |
⋠ |
⋡ |
⋢ |
⋣ |
⋤ |
⋥ |
⋦ |
⋧ |
⋨ |
⋩ |
⋪ |
⋫ |
⋬ |
⋭ |
⋲ |
⋴ |
⋳ |
⋵ |
⋷ |
⋶ |
⋸ |
⋹ |
⋺ |
⋼ |
⋻ |
⋾ |
⋽ |
⋿ |
⌢ |
⌣ |
△ |
▶ |
▷ |
⊳ |
◀ |
◁ |
⊲ |
⟂ |
⨝ |
⩽ |
⩾ |
⪅ |
⪆ |
⪉ |
⪊ |
⪋ |
⪌ |
⪕ |
⪖ |
⪷ |
⪸ |
⪹ |
⪺ |
⫅ |
⫆ |
⫋ |
⫌ |
箭头符号
⃖ |
|
← |
↑ |
→ |
→ |
↓ |
↔ |
↕ |
↖ |
↗ |
↘ |
↙ |
↚ |
↛ |
↜ |
↝ |
↞ |
↟ |
↠ |
↡ |
↢ |
↣ |
↤ |
↥ |
↦ |
↧ |
↨ |
↩ |
↪ |
↫ |
↬ |
↭ |
↮ |
↯ |
↰ |
↱ |
↲ |
↳ |
↶ |
↷ |
↺ |
↻ |
↻ |
↼ |
↽ |
↾ |
↿ |
⇀ |
⇁ |
⇂ |
⇃ |
⇄ |
⇅ |
⇆ |
⇇ |
⇈ |
⇉ |
⇊ |
⇋ |
⇌ |
⇍ |
⇎ |
⇏ |
⇐ |
⇑ |
⇒ |
⇓ |
⇔ |
⇕ |
⇖ |
⇗ |
⇘ |
⇙ |
⇚ |
⇛ |
⇝ |
⇝ |
⇤ |
⇥ |
⊌ |
⊸ |
⟵ |
⟶ |
⟷ |
⟸ |
⟹ |
⟺ |
⟼ |
⤎ |
⤏ |
点符号
… |
∴ |
∵ |
∷ |
⋮ |
⋯ |
⋰ |
⋱ |
黑板体字符
ℂ |
ℕ |
ℙ |
ℚ |
ℝ |
ℤ |
手写体字符
ℊ |
ℋ |
ℐ |
ℒ |
ℛ |
ℬ |
ℯ |
ℰ |
ℱ |
ℳ |
ℴ |
Fraktur 字体字符
ℨ |
ℭ |
杂项符号
$ |
¢ |
£ |
¥ |
§ |
© |
¬ |
® |
° |
¶ |
ħ |
ı |
ı |
Ł |
ł |
ƛ |
ȷ |
† |
‡ |
‰ |
′ |
‵ |
ℏ |
ℑ |
ℓ |
℘ |
ℜ |
℧ |
Ⅎ |
⅁ |
∀ |
∁ |
∂ |
∃ |
∄ |
∅ |
∅ |
∆ |
∇ |
∎ |
∞ |
∠ |
∡ |
∢ |
∾ |
∿ |
⊹ |
Ⓢ |
■ |
△ |
▵ |
▴ |
▾ |
▿ |
★ |
☡ |
♠ |
♡ |
♢ |
♣ |
♧ |
♭ |
♮ |
♯ |
✓ |
✠ |
如果某个特定符号没有名称(STIX 字体中许多更不常见的符号就是这种情况),也可以使用 Unicode 字符
r'$\u23ce$'