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