Matplotlib 中文用户指南 4.6 编写数学表达式
編寫數(shù)學(xué)表達(dá)式
原文:Writing mathematical expressions
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
你可以在任何 matplotlib 文本字符串中使用子 TeX 標(biāo)記,將它放在一對美元符號($)內(nèi)。
注意,你不需要安裝 TeX,因?yàn)?matplotlib 提供了自己的 TeX 表達(dá)式解析器,布局引擎和字體。 布局引擎是 Donald Knuth 的 TeX 中的布局算法的一種相當(dāng)直接的適配版,所以質(zhì)量是相當(dāng)不錯的(matplotlib 還為那些想要調(diào)用 TeX 生成文本的人提供一個usetex選項(xiàng)(參見使用 LaTeX 渲染文本 )。
任何文本元素都可以使用數(shù)學(xué)文本。 你應(yīng)該使用原始字符串(在引號前面加一個'r'),并用美元符號($)包圍數(shù)學(xué)文本,如 TeX。 常規(guī)文本和數(shù)學(xué)文本可以在同一個字符串內(nèi)交錯。 Mathtext 可以使用 Computer Modern 字體(來自 (La)TeX),STIX 字體(為與 Times 混合使用而設(shè)計(jì))或你提供的 Unicode 字體。 可以使用自定義變量mathtext.fontset選擇 mathtext 字體(請參閱自定義 matplotlib)
注意
在Python的 『narrow』 構(gòu)建中,如果使用 STIX 字體,你還應(yīng)該將ps.fonttype和pdf.fonttype設(shè)置為 3(默認(rèn)值),而不是 42。否則一些字符將不可見。
下面是個簡單的例子:
# plain text plt.title('alpha > beta')生成alpha > beta。
但是這個:
# math text plt.title(r'$\alpha > \beta$')生成 。
注意
Mathtext 應(yīng)該放在一對美元符號($)之間。 為了易于顯示貨幣值,例如$ 100.00,如果整個字符串中存在單個美元符號,則它將被逐字顯示為美元符號。 這是常規(guī) TeX 的一個小改變,其中非數(shù)學(xué)文本中的美元符號必須被轉(zhuǎn)義('$')。
注意
雖然一對美元符號($)內(nèi)的語法是 TeX 風(fēng)格的,但是外面的文本不是。 特別是,字符:
# $ % & ~ _ ^ \ { } \( \) \[ \]在 TeX 中的數(shù)學(xué)模式之外有特殊的意義。 因此,根據(jù)rcParam text.usetex標(biāo)志這些字符的表現(xiàn)有所不同。 更多信息請參閱usetex教程。
下標(biāo)和上標(biāo)
為了制作下標(biāo)和上標(biāo),使用_或者^符號:
r'$\alpha_i > \beta_i$'一些符號會自動將它們的下標(biāo)或上標(biāo)放在操作符的底部或頂部,例如,為了編寫 0 到無窮的 的和,你可以:
r'$\sum_{i=0}^\infty x_i$'分?jǐn)?shù)、二項(xiàng)式和堆疊數(shù)
可以使用\frac{}{},\binomial{}{}和\stackrel{}{}命令分別創(chuàng)建分?jǐn)?shù),二項(xiàng)式和堆疊數(shù)字:
r'$\frac{3}{4} \binom{3}{4} \stackrel{3}{4}$'產(chǎn)生
分?jǐn)?shù)可以任意嵌套:
r'$\frac{5 - \frac{1}{x}}{4}$'產(chǎn)生
請注意,在分?jǐn)?shù)周圍放置圓括號和花括號需要特別注意。 這種明顯的方式會產(chǎn)生太小的括號:
r'$(\frac{5 - \frac{1}{x}}{4})$'解決方案是在括號前面加上\left和\right以通知解析器這些括號包含整個對象:
r'$\left(\frac{5 - \frac{1}{x}}{4}\right)$'根式
根式可以有\(zhòng)sqrt[]{}產(chǎn)生,例如:
r'$\sqrt{2}$'方括號內(nèi)可以(可選地)設(shè)置任何底數(shù)。 請注意,底數(shù)必須是一個簡單的表達(dá)式,并且不能包含布局命令,如分?jǐn)?shù)或上下標(biāo):
r'$\sqrt[3]{x}$'字體
用于數(shù)學(xué)符號的默認(rèn)字體是斜體。
注意
此默認(rèn)值可以使用mathtext.default rcParam更改。 這是非常有用的,例如,通過將其設(shè)置為regular,使用與常規(guī)非數(shù)學(xué)文本相同的字體作為數(shù)學(xué)文本。
為了修改字體,例如,以羅馬字體編寫sin,使用字體命令來閉合文本:
r'$s(t) = \mathcal{A}\mathrm{sin}(2 \omega t)$'這里s和t是斜體(默認(rèn))的變量,sin是羅馬字體,振幅A是書法字體。 注意在上面的例子中,A和sin之間的間距被擠壓。 你可以使用間距命令在它們之間添加一些空格:
s(t) = \mathcal{A}\/\sin(2 \omega t)所有字體的可用選項(xiàng)為:
| \mathrm{Roman} | |
| \mathit{Italic} | |
| \mathtt{Typewriter} | |
| \mathcal{CALLIGRAPHY} |
使用 STIX 字體時,你也可以選擇:
| \mathbb{blackboard} | |
| \mathrm{\mathbb{blackboard}} | |
| \mathfrak{Fraktur} | |
| \mathsf{sansserif} | |
| \mathrm{\mathsf{sansserif}} | |
| \mathcircled{circled} |
還有三個全局『字體集』可供選擇,它們使用matplotlibrc中的mathtext.fontset參數(shù)進(jìn)行選擇。
cm: Computer Modern (TeX)
stix: STIX (為和 Times 混合使用而設(shè)計(jì))
stixsans: STIX sans-serif
此外,你可以使用\mathdefault{...}或其別名\mathregular{...}來使用用于 mathtext 之外的常規(guī)文本的字體。 這種方法有一些限制,最明顯的是,可以使用很少的符號,但可用于將數(shù)學(xué)表達(dá)式與圖中的其他文本混合。
自定義字體
mathtext 還提供了一種對數(shù)學(xué)公式使用自定義字體的方法。 這種方法使用起來相當(dāng)棘手,應(yīng)該看做為有耐心的用戶準(zhǔn)備的試驗(yàn)特性。 通過將rcParam mathtext.fontset設(shè)置為custom,你可以設(shè)置以下參數(shù),這些參數(shù)控制用于特定數(shù)學(xué)字符集的字體文件。
| mathtext.it | \mathit{} 默認(rèn)斜體 |
| mathtext.rm | \mathrm{} 羅馬字體(upright) |
| mathtext.tt | \mathtt{} 打字機(jī)(monospace) |
| mathtext.bf | \mathbf{} 粗體 |
| mathtext.cal | \mathcal{} 書法 |
| mathtext.sf | \mathsf{} sans-serif |
每個參數(shù)應(yīng)該設(shè)置為fontconfig字體描述符(在尚未編寫的字體章節(jié)中定義)。
所使用的字體應(yīng)該具有 Unicode 映射,以便找到任何非拉丁字符,例如希臘語。 如果要使用未包含在自定義字體中的數(shù)學(xué)符號,可以將rcParam mathtext.fallback_to_cm設(shè)置為True,這將導(dǎo)致自定義字體中找不到特定字符時,數(shù)學(xué)文本系統(tǒng)使用默認(rèn)的 Computer Modern 字體中的字符。
請注意,Unicode 中規(guī)定的數(shù)學(xué)字形隨時間而演進(jìn),許多字體的字形對于 mathtext 可能不在正確位置。
重音符號
重音命令可以位于任何符號之前,在其上添加重音。 他們中的一些些擁有較長和較短的形式。
| \acute a 或 \'a | |
| \bar a | |
| \breve a | |
| \ddot a 或 \"a | |
| \dot a 或 \.a | |
| \grave a 或 \a` | |
| \hat a 或 \^a | |
| \tilde a 或 \~a | |
| \vec a | |
| \overline{abc} |
另外有兩個特殊的重音符號,可以自動調(diào)整為符號的寬度:
| \widehat{xyz} | |
| \widetilde{xyz} |
當(dāng)把重音放在小寫的i和j上時應(yīng)該小心。 注意下面的\imath用來避免i上額外的點(diǎn):
r"$\hat i\ \ \hat \imath$"符號
你也可以使用更大量的 TeX 符號,比如\infty,\leftarrow,\sum,\int。
| \alpha | \beta | \chi |
| \epsilon | \eta | \gamma |
| \lambda | \mu | \nu |
| \pi | \psi | \rho |
| \theta | \upsilon | \varepsilon |
| \varpi | \varrho | \varsigma |
| \zeta |
| \Delta | \Gamma | \Lambda |
| \Psi | \Sigma | \Theta |
| \nabla |
| \aleph | \beth | \daleth |
| / | [ | \Downarrow |
| \downarrow | \langle | \lceil |
| \rangle | \rceil | \rfloor |
| \vert | \{ | | |
| \bigcap | \bigcup | \bigodot |
| \biguplus | \bigvee | \bigwedge |
| \oint | \prod | \sum |
| \Pr | \arccos | \arcsin |
| \arg | \cos | \cosh |
| \coth | \csc | \deg |
| \dim | \exp | \gcd |
| \inf | \ker | \lg |
| \liminf | \limsup | \ln |
| \max | \min | \sec |
| \sinh | \sup | \tan |
| \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 | \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 | \iint | \imath |
| \infty | \jmath | \ldots |
| \measuredangle | \natural | \neg |
| \nexists | \oiiint | \partial |
| \prime | \sharp | \spadesuit |
| \sphericalangle | \ss | \triangledown |
| \varnothing | \vartriangle | \vdots |
| \wp | \yen |
如果特定符號沒有名稱(對于 STIX 字體中的許多較為模糊的符號也是如此),也可以使用 Unicode 字符:
ur'$\u23ce$'示例
下面是個示例,在上下文中展示了許多這些特性。
import numpy as np import matplotlib.pyplot as plt t = np.arange(0.0, 2.0, 0.01) s = np.sin(2*np.pi*t)plt.plot(t,s) plt.title(r'$\alpha_i > \beta_i$', fontsize=20) plt.text(1, -0.6, r'$\sum_{i=0}^\infty x_i$', fontsize=20) plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',fontsize=20) plt.xlabel('time (s)') plt.ylabel('volts (mV)') plt.show()總結(jié)
以上是生活随笔為你收集整理的Matplotlib 中文用户指南 4.6 编写数学表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java.lang.IllegalSta
- 下一篇: 通过IEnumerable和IDispo