备注
Go to the end 下载完整的示例代码.
书写数学表达式#
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 渲染文本 .
备注
要在文档中生成 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 $')

虽然 Mathtext 旨在与常规 TeX 兼容,但在何时需要转义特殊字符方面有所不同.在 TeX 中,美元符号必须在非数学文本中转义 '\$' ,而在 Matplotlib 中,美元符号必须在编写 Mathtext 时转义.
这些其他特殊字符也在非数学 TeX 中转义,而在 Matplotlib 中,它们的行为取决于 rcParams["text.usetex"] (default: False) 的设置方式:
# $ % & ~ _ ^ \ { } \( \) \[ \]
有关更多信息,请参见 usetex tutorial .
下标和上标#
要创建下标和上标,请使用 '_' 和 '^' 符号:
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 字体,设计用于与 Times 融合的 STIX 字体,或您提供的 Unicode 字体.Mathtext 字体可以通过 rcParams["mathtext.fontset"] (default: 'dejavusans') 选择.
所有字体都可用的选择有:
命令 |
结果 |
|---|---|
|
|
|
|
|
|
|
|
当使用 STIX 字体时,您还可以选择:
命令 |
结果 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
还有五个全局"字体集"可供选择,可以使用 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 ,您可以设置以下参数,这些参数控制要为特定数学字符集使用哪个字体文件.
参数 |
对应于 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
每个参数都应设置为 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 .
小写希腊字母
α |
β |
γ |
δ |
ε |
ε |
ζ |
η |
θ |
ϑ |
ι |
κ |
ϰ |
λ |
μ |
ν |
ξ |
π |
ϖ |
ρ |
ϱ |
σ |
ς |
τ |
υ |
χ |
ψ |
ω |
ϕ |
φ |
ϝ |
大写希腊字母
Γ |
Δ |
Θ |
Λ |
Ξ |
Π |
Σ |
Υ |
Φ |
Ψ |
Ω |
希伯来字母
ℸ |
ℷ |
ℶ |
ℵ |
拉丁命名字符
Å |
Æ |
Ð |
Ø |
Þ |
ß |
å |
æ |
ð |
ð |
ø |
þ |
Œ |
œ |
分隔符
( |
( |
) |
) |
. |
/ |
< |
> |
[ |
[ |
\ |
| |
| |
] |
] |
{ |
{ |
{ |
} |
} |
} |
‖ |
‖ |
↑ |
↓ |
↕ |
⇑ |
⇓ |
⇕ |
⌈ |
⌉ |
⌊ |
⌋ |
⟨ |
⟩ |
⟮ |
⟯ |
大符号
∏ |
∐ |
∑ |
∫ |
∬ |
∭ |
∮ |
∯ |
∰ |
⋀ |
⋁ |
⋂ |
⋃ |
⨀ |
⨁ |
⨂ |
⨄ |
⨆ |
⨌ |
标准函数名称
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 |
二元运算符号
|
+ |
- |
± |
× |
÷ |
† |
‡ |
− |
∓ |
∔ |
∕ |
∖ |
∗ |
∘ |
∙ |
∧ |
∨ |
∩ |
∪ |
∸ |
∹ |
∺ |
≀ |
⊍ |
⊎ |
⊓ |
⊔ |
⊕ |
⊖ |
⊗ |
⊘ |
⊙ |
⊚ |
⊛ |
⊝ |
⊞ |
⊟ |
⊠ |
⊡ |
⊴ |
⊵ |
⊺ |
⊻ |
⊼ |
⊽ |
⋄ |
⋅ |
⋆ |
⋇ |
⋋ |
⋌ |
⋎ |
⋏ |
⋒ |
⋓ |
⌆ |
⌽ |
△ |
▷ |
▷ |
▽ |
◁ |
◁ |
○ |
◫ |
⨿ |
⩕ |
关系符号
: |
< |
= |
= |
> |
϶ |
… |
∈ |
∉ |
∊ |
∋ |
∌ |
∍ |
∝ |
∝ |
∟ |
∣ |
∤ |
∥ |
∦ |
∴ |
∵ |
∶ |
∼ |
∽ |
≁ |
≂ |
≃ |
≄ |
≅ |
≆ |
≇ |
≈ |
≉ |
≊ |
≋ |
≌ |
≍ |
≎ |
≏ |
≐ |
≑ |
≑ |
≒ |
≓ |
≔ |
≕ |
≖ |
≗ |
≘ |
≙ |
≚ |
≛ |
≜ |
≜ |
≝ |
≞ |
≟ |
≠ |
≠ |
≡ |
≢ |
≣ |
≤ |
≥ |
≦ |
≧ |
≨ |
≩ |
≪ |
≫ |
≬ |
≮ |
≯ |
≰ |
≱ |
≲ |
≳ |
≴ |
≵ |
≶ |
≷ |
≸ |
≹ |
≺ |
≻ |
≼ |
≼ |
≽ |
≽ |
≾ |
≿ |
⊀ |
⊁ |
⊂ |
⊃ |
⊄ |
⊅ |
⊆ |
⊇ |
⊈ |
⊉ |
⊊ |
⊋ |
⊏ |
⊐ |
⊑ |
⊒ |
⊜ |
⊢ |
⊣ |
⊤ |
⊥ |
⊦ |
⊧ |
⊨ |
⊩ |
⊪ |
⊫ |
⊬ |
⊭ |
⊮ |
⊯ |
⊱ |
⊴ |
⊵ |
⊾ |
⊿ |
⋈ |
⋉ |
⋊ |
⋍ |
⋐ |
⋑ |
⋔ |
⋕ |
⋖ |
⋗ |
⋘ |
⋙ |
⋚ |
⋛ |
⋜ |
⋝ |
⋞ |
⋟ |
⋠ |
⋡ |
⋢ |
⋣ |
⋤ |
⋥ |
⋦ |
⋧ |
⋨ |
⋩ |
⋪ |
⋫ |
⋬ |
⋭ |
⋲ |
⋴ |
⋳ |
⋵ |
⋷ |
⋶ |
⋸ |
⋹ |
⋺ |
⋼ |
⋻ |
⋾ |
⋽ |
⋿ |
⌢ |
⌣ |
△ |
▶ |
▷ |
⊳ |
◀ |
◁ |
⊲ |
⟂ |
⨝ |
⩽ |
⩾ |
⪅ |
⪆ |
⪉ |
⪊ |
⪋ |
⪌ |
⪕ |
⪖ |
⪷ |
⪸ |
⪹ |
⪺ |
⫅ |
⫆ |
⫋ |
⫌ |
Arrow symbols
箭头符号 |
⃖ |
|
↑ |
→ |
← |
↓ |
→ |
↕ |
↔ |
↖ |
↗ |
↘ |
↙ |
↚ |
↛ |
↜ |
↝ |
↞ |
↟ |
↠ |
↡ |
↢ |
↣ |
↤ |
↥ |
↦ |
↧ |
↨ |
↩ |
↪ |
↫ |
↬ |
↭ |
↮ |
↯ |
↰ |
↱ |
↲ |
↳ |
↶ |
↷ |
↻ |
↺ |
↻ |
↼ |
↽ |
↾ |
↿ |
⇀ |
⇁ |
⇂ |
⇃ |
⇄ |
⇅ |
⇆ |
⇇ |
⇈ |
⇉ |
⇊ |
⇋ |
⇌ |
⇍ |
⇎ |
⇏ |
⇑ |
⇐ |
⇓ |
⇒ |
⇕ |
⇔ |
⇗ |
⇘ |
⇙ |
⇚ |
⇛ |
⇝ |
⇝ |
⇤ |
⇥ |
⊌ |
⊸ |
⟵ |
⟶ |
⟷ |
⟸ |
⟹ |
⟺ |
⟼ |
⤎ |
⤏ |
点符号
… |
∴ |
∵ |
∷ |
⋮ |
⋯ |
⋰ |
⋱ |
黑板粗体字符
ℂ |
ℕ |
ℙ |
ℚ |
ℝ |
ℤ |
脚本字符
ℊ |
ℋ |
ℐ |
ℒ |
ℛ |
ℬ |
ℯ |
ℰ |
ℱ |
ℳ |
ℴ |
Fraktur 字符
ℨ |
ℭ |
其他符号
$ |
¢ |
£ |
¥ |
§ |
© |
¬ |
® |
° |
¶ |
ħ |
ı |
ı |
Ł |
ł |
ƛ |
ȷ |
† |
‡ |
‰ |
′ |
‵ |
ℏ |
ℑ |
ℓ |
℘ |
ℜ |
℧ |
Ⅎ |
⅁ |
∀ |
∁ |
∂ |
∃ |
∄ |
∅ |
∅ |
∆ |
∇ |
∎ |
∞ |
∠ |
∡ |
∢ |
∾ |
∿ |
⊹ |
Ⓢ |
■ |
△ |
▵ |
▴ |
▾ |
▿ |
★ |
☡ |
♠ |
♡ |
♢ |
♣ |
♧ |
♭ |
♮ |
♯ |
✓ |
✠ |
如果某个特定符号没有名称 (对于 STIX 字体中许多不太常见的符号来说是这样),也可以使用 Unicode 字符:
r'$\u23ce$'























