写数学表达式

用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