注意
转到末尾下载完整的示例代码。
书写数学表达式#
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$")
另请参阅
不 需要安装 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 $')
虽然 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 字体、STIX 字体(旨在与 Times 字体很好地融合),或者您提供的 Unicode 字体。可以通过 rcParams["mathtext.fontset"]
(默认值: 'dejavusans'
) 选择 Mathtext 字体。
所有字体可用的选项为
命令 |
结果 |
---|---|
|
|
|
|
|
|
|
当使用 STIX 字体时,您还可以选择以下字体:
命令 |
结果 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
此外,还有五种全局“字体集”可供选择,这些字体集使用 matplotlibrc 中的 mathtext.fontset
参数进行选择。
dejavusans
:DejaVu Sansdejavuserif
:DejaVu Serifcm
:Computer Modern (TeX)stix
:STIX(设计为与 Times 字体良好融合)stixsans
:STIX sans-serif
另外,您可以使用 \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 |
二元运算符号
* |
+ |
- |
± |
× |
÷ |
† |
‡ |
− |
∓ |
∔ |
∕ |
∖ |
∗ |
∘ |
∙ |
∧ |
∨ |
∩ |
∪ |
∸ |
∹ |
∺ |
≀ |
⊍ |
⊎ |
⊓ |
⊔ |
⊕ |
⊖ |
⊗ |
⊘ |
⊙ |
⊚ |
⊛ |
⊝ |
⊞ |
⊟ |
⊠ |
⊡ |
⊴ |
⊵ |
⊺ |
⊻ |
⊼ |
⊽ |
⋄ |
⋅ |
⋆ |
⋇ |
⋋ |
⋌ |
⋎ |
⋏ |
⋒ |
⋓ |
⌆ |
⌽ |
△ |
▷ |
▷ |
▽ |
◁ |
◁ |
○ |
◫ |
⨿ |
⩕ |
关系符号
: |
< |
= |
= |
> |
϶ |
… |
∈ |
∉ |
∊ |
∋ |
∌ |
∍ |
∝ |
∝ |
∟ |
∣ |
∤ |
∥ |
∦ |
∴ |
∵ |
∶ |
∼ |
∽ |
≁ |
≂ |
≃ |
≄ |
≅ |
≆ |
≇ |
≈ |
≉ |
≊ |
≋ |
≌ |
≍ |
≎ |
≏ |
≐ |
≑ |
≑ |
≒ |
≓ |
≔ |
≕ |
≖ |
≗ |
≘ |
≙ |
≚ |
≛ |
≜ |
≜ |
≝ |
≞ |
≟ |
≠ |
≠ |
≡ |
≢ |
≣ |
≤ |
≥ |
≦ |
≧ |
≨ |
≩ |
≪ |
≫ |
≬ |
≮ |
≯ |
≰ |
≱ |
≲ |
≳ |
≴ |
≵ |
≶ |
≷ |
≸ |
≹ |
≺ |
≻ |
≼ |
≼ |
≽ |
≽ |
≾ |
≿ |
⊀ |
⊁ |
⊂ |
⊃ |
⊄ |
⊅ |
⊆ |
⊇ |
⊈ |
⊉ |
⊊ |
⊋ |
⊏ |
⊐ |
⊑ |
⊒ |
⊜ |
⊢ |
⊣ |
⊤ |
⊥ |
⊦ |
⊧ |
⊨ |
⊩ |
⊪ |
⊫ |
⊬ |
⊭ |
⊮ |
⊯ |
⊱ |
⊴ |
⊵ |
⊾ |
⊿ |
⋈ |
⋉ |
⋊ |
⋍ |
⋐ |
⋑ |
⋔ |
⋕ |
⋖ |
⋗ |
⋘ |
⋙ |
⋚ |
⋛ |
⋜ |
⋝ |
⋞ |
⋟ |
⋠ |
⋡ |
⋢ |
⋣ |
⋤ |
⋥ |
⋦ |
⋧ |
⋨ |
⋩ |
⋪ |
⋫ |
⋬ |
⋭ |
⋲ |
⋴ |
⋳ |
⋵ |
⋷ |
⋶ |
⋸ |
⋹ |
⋺ |
⋼ |
⋻ |
⋾ |
⋽ |
⋿ |
⌢ |
⌣ |
△ |
▶ |
▷ |
⊳ |
◀ |
◁ |
⊲ |
⟂ |
⨝ |
⩽ |
⩾ |
⪅ |
⪆ |
⪉ |
⪊ |
⪋ |
⪌ |
⪕ |
⪖ |
⪷ |
⪸ |
⪹ |
⪺ |
⫅ |
⫆ |
⫋ |
⫌ |
箭头符号
⃖ |
|
← |
↑ |
→ |
→ |
↓ |
↔ |
↕ |
↖ |
↗ |
↘ |
↙ |
↚ |
↛ |
↜ |
↝ |
↞ |
↟ |
↠ |
↡ |
↢ |
↣ |
↤ |
↥ |
↦ |
↧ |
↨ |
↩ |
↪ |
↫ |
↬ |
↭ |
↮ |
↯ |
↰ |
↱ |
↲ |
↳ |
↶ |
↷ |
↺ |
↻ |
↻ |
↼ |
↽ |
↾ |
↿ |
⇀ |
⇁ |
⇂ |
⇃ |
⇄ |
⇅ |
⇆ |
⇇ |
⇈ |
⇉ |
⇊ |
⇋ |
⇌ |
⇍ |
⇎ |
⇏ |
⇐ |
⇑ |
⇒ |
⇓ |
⇔ |
⇕ |
⇖ |
⇗ |
⇘ |
⇙ |
⇚ |
⇛ |
⇝ |
⇝ |
⇤ |
⇥ |
⊌ |
⊸ |
⟵ |
⟶ |
⟷ |
⟸ |
⟹ |
⟺ |
⟼ |
⤎ |
⤏ |
点符号
… |
∴ |
∵ |
∷ |
⋮ |
⋯ |
⋰ |
⋱ |
黑板粗体字符
ℂ |
ℕ |
ℙ |
ℚ |
ℝ |
ℤ |
手写体字符
ℊ |
ℋ |
ℐ |
ℒ |
ℛ |
ℬ |
ℯ |
ℰ |
ℱ |
ℳ |
ℴ |
哥特体字符
ℨ |
ℭ |
杂项符号
$ |
¢ |
£ |
¥ |
§ |
© |
¬ |
® |
° |
¶ |
ħ |
ı |
ı |
Ł |
ł |
ƛ |
ȷ |
† |
‡ |
‰ |
′ |
‵ |
ℏ |
ℑ |
ℓ |
℘ |
ℜ |
℧ |
Ⅎ |
⅁ |
∀ |
∁ |
∂ |
∃ |
∄ |
∅ |
∅ |
∆ |
∇ |
∎ |
∞ |
∠ |
∡ |
∢ |
∾ |
∿ |
⊹ |
Ⓢ |
■ |
△ |
▵ |
▴ |
▾ |
▿ |
★ |
☡ |
♠ |
♡ |
♢ |
♣ |
♧ |
♭ |
♮ |
♯ |
✓ |
✠ |
如果某个特定的符号没有名称(STIX字体中许多较晦涩的符号就是这种情况),也可以使用Unicode字符。
r'$\u23ce$'