写数学表达式

用matplotlib编写数学表达式的介绍。

通过将子集tex标记放在一对美元符号($)中,可以在任何matplotlib文本字符串中使用它。

注意,您不需要安装tex,因为matplotlib提供了自己的tex表达式解析器、布局引擎和字体。布局引擎是对Donald Knuth的tex中布局算法的一个相当直接的改编,因此质量相当好(Matplotlib还提供了 usetex 用于那些希望调用tex生成文本的用户的选项(请参见 Latex 文本渲染 )

任何文本元素都可以使用数学文本。您应该使用原始字符串(在引号前面加上 'r' ,并用美元符号($)将数学文本包围起来,就像在tex中一样。常规文本和数学文本可以在同一字符串中交错。MathText可以使用dejavu sans(默认)、dejavu serif、计算机现代字体(来自(la)tex)。 STIX 字体(的设计目的是与时间很好地混合),或您提供的Unicode字体。可以使用自定义变量选择MathText字体 mathtext.fontset (见 使用样式表和RCPARAM自定义Matplotlib )

下面是一个简单的例子:

# plain text
plt.title('alpha > beta')

生成“α>β”。

鉴于此:

# math text
plt.title(r'$\alpha > \beta$')

生成“:mathmpl:alpha>beta”。

注解

MathText应该放在一对美元符号($)之间。为了便于显示货币值,例如“100.00美元”,如果整个字符串中存在一个美元符号,它将以美元符号逐字显示。这是普通tex的一个小变化,在普通tex中,非数学文本中的美元符号必须转义(“\$”)。

注解

虽然美元符号($)对内的语法旨在类似于tex,但外部的文本则不是。尤其是字符,例如:

# $ % & ~ _ ^ \ { } \( \) \[ \]

在TeX的数学模式之外有特殊的含义。因此,这些字符的行为将因时间而异 rcParams["text.usetex"] (default: False) . 见 usetex tutorial 更多信息。

下标和上标

要制作下标和上标,请使用 '_' 和 '^' 符号:

r'$\alpha_i > \beta_i$'
\[\阿尔法·贝塔\]

要正确显示多字母下标或上标,应将它们放在大括号中 {{...}} ::

r'$\alpha^{ic} > \beta_{ic}$'
\[\阿尔法^{ic}>\beta{ic}\]

有些符号会自动将其子/上标放在运算符下方和上方。例如,写下 从 到 你可以这样做:

r'$\sum_{i=0}^\infty x_i$'
\[\总和i=0 ^ \ infty x_i\]

分数、二项式和堆积数

分数、二项式和堆积数字可以用 \frac{{}}{{}} , \binom{{}}{{}} 和 \genfrac{{}}{{}}{{}}{{}}{{}}{{}} 命令,分别为:

r'$\frac{3}{4} \binom{3}{4} \genfrac{}{}{0}{}{3}{4}$'

生产

\[\frac{3}{4}\binom{3}{4}\genfrac{}{0pt}{3}{4}\]

分数可以任意嵌套:

r'$\frac{5 - \frac{1}{x}}{4}$'

生产

\[\压裂5-\压裂1 x 4\]

请注意,在分数周围放置括号和括号需要特别小心。以明显的方式进行操作会产生太小的括号:

r'$(\frac{5 - \frac{1}{x}}{4})$'
\[(\frac 5-\frac 1 x 4)\]

解决方法是在括号前面加上 \left 和 \right 通知解析器这些括号包含整个对象。::

r'$\left(\frac{5 - \frac{1}{x}}{4}\right)$'
\[\左(\frac 5-\frac 1 x 4 \右)\]

激进分子

自由基可以用 \sqrt[]{{}} 命令。例如::

r'$\sqrt{2}$'
\[\qRT { 2 }\]

任何底座都可以(可选)安装在方括号内。请注意,基必须是简单表达式,并且不能包含分数或子/上标等布局命令:

r'$\sqrt[3]{x}$'
\[\qRT [3] {x}\]

字体

默认字体为 斜体字 数学符号。

注解

可以使用更改此默认值 rcParams["mathtext.default"] (default: 'it') . 这很有用,例如,通过将其设置为 regular .

要更改字体,例如以罗马字体书写“sin”,请将文本括在字体命令中:

r'$s(t) = \mathcal{A}\mathrm{sin}(2 \omega t)$'
\[s(t)=\mathcal a \mathrm sin(2\omega t)\]

更方便的是,许多用罗马字体排版的常用函数名都有快捷方式。所以上面的表达式可以写成:

r'$s(t) = \mathcal{A}\sin(2 \omega t)$'
\[s(t)=\mathcal a \sin(2 \omega t)\]

这里“s”和“t”是斜体字体的变量(默认),“s in”是罗马字体,振幅“a”是书法字体。在上面的示例中注意书法 A 被压入 sin . 您可以使用间距命令在它们之间添加一点空白:

r's(t) = \mathcal{A}\/\sin(2 \omega t)'
\[s(t)=\mathcal{A}\,\sin(2\omega t)\]

所有字体的可用选项包括:

命令 结果
\mathrm{Roman}
\mathit{Italic}
\mathtt{Typewriter}
\mathcal{CALLIGRAPHY}

当使用 STIX 字体,您还可以选择:

命令 结果
\mathbb{blackboard}
\mathrm{\mathbb{blackboard}}
\mathfrak{Fraktur}
\mathsf{sansserif}
\mathrm{\mathsf{sansserif}}

还有五个全局“字体集”可供选择,它们是使用 mathtext.fontset 参数在 matplotlibrc .

dejavusans :DejaVu Sans公司

dejavuserif :DejaVu衬线

cm :现代计算机(TeX)

stix :STIX(与时代完美融合)

stixsans :STIX无衬线

此外,您可以使用 \mathdefault{{...}} 或它的别名 \mathregular{{...}} 使用MathText之外的常规文本所用的字体。这种方法有很多局限性,最显著的是可用符号要少得多,但是使数学表达式与绘图中的其他文本很好地混合是很有用的。

自定义字体

mathtext还提供了一种为数学使用自定义字体的方法。这种方法使用起来相当棘手,应该被视为仅针对患者用户的实验性功能。通过设置 rcParams["mathtext.fontset"] (default: 'dejavusans') 到 custom ,然后可以设置以下参数,这些参数控制要用于特定数学字符集的字体文件。

参数 相对应
mathtext.it \mathit{{}} 或默认斜体
mathtext.rm \mathrm{{}} 罗马(直立)
mathtext.tt \mathtt{{}} 打字机(单空间)
mathtext.bf \mathbf{{}} 粗斜体字
mathtext.cal \mathcal{{}} 书法的
mathtext.sf \mathsf{{}} 无衬线

每个参数都应设置为fontconfig字体描述符(如“尚未写入的字体”一章中所定义)。

使用的字体应该有一个Unicode映射,以便找到任何非拉丁字符,如希腊语。如果要使用自定义字体中不包含的数学符号,可以设置 rcParams["mathtext.fallback"] (default: 'cm') 要么 'cm' , 'stix' 或 'stixsans' 这将导致mathtext系统在自定义字体中找不到特定字符时使用替代字体中的字符。

请注意,Unicode中指定的数学glyph随着时间的推移而发展,许多字体的mathText位置可能不正确。

口音

重音命令可以在任何符号之前添加重音。有些表格有长的和短的。

命令 结果
\acute a or \'a
\bar a
\breve a
\ddot a or \''a
\dot a or \.a
\grave a or \`a
\hat a or \^a
\tilde a or \~a
\vec a
\overline{abc}

此外,还有两种特殊的重音符号可自动调整为以下符号的宽度:

命令 结果
\widehat{xyz}
\widetilde{xyz}

在小写字母I和J上加重音符号时应小心。注意以下内容 \imath 用于避免I:上的多余点:

r"$\hat i\ \ \hat \imath$"
\[\我\ \ \hat \imath\]

符号

您还可以使用大量的tex符号,如 \infty , \leftarrow , \sum , \int .

Lower-case Greek

α \alpha β \beta χ \chi δ \delta ϝ \digamma ε \epsilon
η \eta γ \gamma ι \iota κ \kappa λ \lambda μ \mu
ν \nu ω \omega ϕ \phi π \pi ψ \psi ρ \rho
σ \sigma 钍 \tau θ \theta υ \upsilon ε \varepsilon ϰ \varkappa
φ \varphi ϖ \varpi ϱ \varrho ς \varsigma ϑ \vartheta ξ \xi
ζ \zeta          

Upper-case Greek

Δ \Delta Γ \Gamma Λ \Lambda Ω \Omega Φ \Phi Π \Pi Ψ \Psi Σ \Sigma
Θ \Theta Υ \Upsilon Ξ \Xi ℧ \mho ∇ \nabla      

Hebrew

ℵ \aleph ℶ \beth ℸ \daleth ℷ \gimel    

Delimiters

/ / [ [ ⇓ \Downarrow ⇑ \Uparrow ‖ \Vert \backslash
↓ \downarrow ⟨ \langle ⌈ \lceil ⌊ \lfloor ⌞ \llcorner ⌟ \lrcorner
⟩ \rangle ⌉ \rceil ⌋ \rfloor ⌜ \ulcorner ↑ \uparrow ⌝ \urcorner
\vert
{ \{{
\|
} \} ] ]
|

大符号

⋂ \bigcap ⋃ \bigcup ⨀ \bigodot ⨁ \bigoplus ⨂ \bigotimes ⨄ \biguplus
⋁ \bigvee ⋀ \bigwedge ∐ \coprod ∫ \int ∮ \oint ∏ \prod
∑ \sum          

标准函数名

公共关系 \Pr arccos公司 \arccos 阿尔辛 \arcsin 阿克坦 \arctan 精氨酸 \arg 余弦 \cos
科什 \cosh 童床 \cot 科思 \coth csc公司 \csc 度 \deg det公司 \det
昏暗的 \dim EXP \exp gcd公司 \gcd 高阶模 \hom 因弗 \inf 克尔 \ker
lg公司 \lg 林 \lim liminf公司 \liminf 利姆苏 \limsup 自然对数 \ln 日志 \log
最大值 \max 闽 \min 秒 \sec 罪 \sin 辛尼 \sinh 啜饮 \sup
棕褐色的 \tan 谭 \tanh        

二进制运算和关系符号

≎ \Bumpeq ⋒ \Cap ⋓ \Cup ≑ \Doteq
⨝ \Join ⋐ \Subset ⋑ \Supset ⊩ \Vdash
⊪ \Vvdash ≈ \approx ≊ \approxeq ∗ \ast
≍ \asymp ϶ \backepsilon ∽ \backsim ⋍ \backsimeq
⊼ \barwedge ∵ \because ≬ \between ○ \bigcirc
▽ \bigtriangledown △ \bigtriangleup ◀ \blacktriangleleft ▶ \blacktriangleright
⊥ \bot ⋈ \bowtie ⊡ \boxdot ⊟ \boxminus
⊞ \boxplus ⊠ \boxtimes ∙ \bullet ≏ \bumpeq
∩ \cap ⋅ \cdot ∘ \circ ≗ \circeq
≔ \coloneq ≅ \cong ∪ \cup ⋞ \curlyeqprec
⋟ \curlyeqsucc ⋎ \curlyvee ⋏ \curlywedge † \dag
⊣ \dashv ‡ \ddag ⋄ \diamond ÷ \div
⋇ \divideontimes ≐ \doteq ≑ \doteqdot ∔ \dotplus
⌆ \doublebarwedge ≖ \eqcirc ≕ \eqcolon ≂ \eqsim
⪖ \eqslantgtr ⪕ \eqslantless ≡ \equiv ≒ \fallingdotseq
⌢ \frown ≥ \geq ≧ \geqq ⩾ \geqslant
≫ \gg ⋙ \ggg ⪺ \gnapprox ≩ \gneqq
⋧ \gnsim ⪆ \gtrapprox ⋗ \gtrdot ⋛ \gtreqless
⪌ \gtreqqless ≷ \gtrless ≳ \gtrsim ∈ \in
⊺ \intercal ⋋ \leftthreetimes 小于 \leq ≦ \leqq
⩽ \leqslant ⪅ \lessapprox ⋖ \lessdot ⋚ \lesseqgtr
⪋ \lesseqqgtr ≶ \lessgtr ≲ \lesssim ≪ \ll
⋘ \lll ⪹ \lnapprox ≨ \lneqq ⋦ \lnsim
⋉ \ltimes ∣ \mid ⊧ \models ∓ \mp
⊯ \nVDash ⊮ \nVdash ≉ \napprox ≇ \ncong
≠ \ne ≠ \neq ≠ \neq ≢ \nequiv
≱ \ngeq ≯ \ngtr ∋ \ni ≰ \nleq
≮ \nless ∤ \nmid ∉ \notin ∦ \nparallel
⊀ \nprec ≁ \nsim ⊄ \nsubset ⊈ \nsubseteq
⊁ \nsucc ⊅ \nsupset ⊉ \nsupseteq ⋪ \ntriangleleft
⋬ \ntrianglelefteq ⋫ \ntriangleright ⋭ \ntrianglerighteq ⊭ \nvDash
⊬ \nvdash ⊙ \odot ⊖ \ominus ⊕ \oplus
⊘ \oslash ⊗ \otimes ∥ \parallel ⟂ \perp
⋔ \pitchfork ± \pm ≺ \prec ⪷ \precapprox
≼ \preccurlyeq ≼ \preceq ⪹ \precnapprox ⋨ \precnsim
≾ \precsim ∝ \propto ⋌ \rightthreetimes ≓ \risingdotseq
⋊ \rtimes ∼ \sim ≃ \simeq ∕ \slash
⌣ \smile ⊓ \sqcap ⊔ \sqcup ⊏ \sqsubset
⊏ \sqsubset ⊑ \sqsubseteq ⊐ \sqsupset ⊐ \sqsupset
⊒ \sqsupseteq ⋆ \star ⊂ \subset ⊆ \subseteq
⫅ \subseteqq ⊊ \subsetneq ⫋ \subsetneqq ≻ \succ
⪸ \succapprox ≽ \succcurlyeq ≽ \succeq ⪺ \succnapprox
⋩ \succnsim ≿ \succsim ⊃ \supset ⊇ \supseteq
⫆ \supseteqq ⊋ \supsetneq ⫌ \supsetneqq ∴ \therefore
X \times ⊤ \top ◁ \triangleleft ⊴ \trianglelefteq
≜ \triangleq ▷ \triangleright ⊵ \trianglerighteq ⊎ \uplus
⊨ \vDash ∝ \varpropto ⊲ \vartriangleleft ⊳ \vartriangleright
⊢ \vdash ∨ \vee ⊻ \veebar ∧ \wedge
≀ \wr      

箭头符号

⇓ \Downarrow ⇐ \Leftarrow ⇔ \Leftrightarrow ⇚ \Lleftarrow
⟸ \Longleftarrow ⟺ \Longleftrightarrow ⟹ \Longrightarrow ↰ \Lsh
⇗ \Nearrow ⇖ \Nwarrow ⇒ \Rightarrow ⇛ \Rrightarrow
↱ \Rsh ⇘ \Searrow ⇙ \Swarrow ⇑ \Uparrow
⇕ \Updownarrow ↺ \circlearrowleft ↻ \circlearrowright ↶ \curvearrowleft
↷ \curvearrowright ⤎ \dashleftarrow ⤏ \dashrightarrow ↓ \downarrow
⇊ \downdownarrows ⇃ \downharpoonleft ⇂ \downharpoonright ↩ \hookleftarrow
↪ \hookrightarrow ⇝ \leadsto ← \leftarrow ↢ \leftarrowtail
↽ \leftharpoondown ↼ \leftharpoonup ⇇ \leftleftarrows ↔ \leftrightarrow
⇆ \leftrightarrows ⇋ \leftrightharpoons ↭ \leftrightsquigarrow ↜ \leftsquigarrow
⟵ \longleftarrow ⟷ \longleftrightarrow ⟼ \longmapsto ⟶ \longrightarrow
↫ \looparrowleft ↬ \looparrowright ↦ \mapsto ⊸ \multimap
⇍ \nLeftarrow ⇎ \nLeftrightarrow ⇏ \nRightarrow ↗ \nearrow
↚ \nleftarrow ↮ \nleftrightarrow ↛ \nrightarrow ↖ \nwarrow
→ \rightarrow ↣ \rightarrowtail ⇁ \rightharpoondown ⇀ \rightharpoonup
⇄ \rightleftarrows ⇄ \rightleftarrows ⇌ \rightleftharpoons ⇌ \rightleftharpoons
⇉ \rightrightarrows ⇉ \rightrightarrows ↝ \rightsquigarrow ↘ \searrow
↙ \swarrow → \to ↞ \twoheadleftarrow ↠ \twoheadrightarrow
↑ \uparrow ↕ \updownarrow ↕ \updownarrow ↿ \upharpoonleft
↾ \upharpoonright ⇈ \upuparrows    

其他符号

$ \$ Å \AA Ⅎ \Finv ⅁ \Game
ℑ \Im \P ℜ \Re § \S
∠ \angle ‵ \backprime ★ \bigstar ■ \blacksquare
▴ \blacktriangle ▾ \blacktriangledown ⋯ \cdots γ \checkmark
® \circledR Ⓢ \circledS ♣ \clubsuit ∁ \complement
© \copyright ⋱ \ddots ♢ \diamondsuit ℓ \ell
∅ \emptyset ð \eth ∃ \exists ♭ \flat
∀ \forall ħ \hbar ♡ \heartsuit ℏ \hslash
∭ \iiint ∬ \iint ı \imath Infinity \infty
ȷ \jmath ... \ldots ∡ \measuredangle ♮ \natural
¬ \neg ∄ \nexists ∰ \oiiint ∂ \partial
′ \prime ♯ \sharp ♠ \spadesuit ∢ \sphericalangle
ß \ss ▿ \triangledown ∅ \varnothing ▵ \vartriangle
⋮ \vdots ℘ \wp ¥ \yen  

如果某个特定符号没有名称(对于Stix字体中许多比较模糊的符号也是如此),也可以使用Unicode字符::

r'$\u23ce$'

例子

下面是一个例子,说明了上下文中的许多特性。

../../_images/sphx_glr_pyplot_mathtext_0011.png

PyPrand数学模型

关键词:matplotlib代码示例,codex,python plot,pyplot Gallery generated by Sphinx-Gallery