編寫數(shù)學(xué)表達(dá)式
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
你可以在任何 matplotlib 文本字符串中使用子 TeX 標(biāo)記,將它放在一對美元符號($
)內(nèi)睬隶。
注意术吗,你不需要安裝 TeX刃滓,因為 matplotlib 提供了自己的 TeX 表達(dá)式解析器,布局引擎和字體缺脉。 布局引擎是 Donald Knuth 的 TeX 中的布局算法的一種相當(dāng)直接的適配版肚医,所以質(zhì)量是相當(dāng)不錯的(matplotlib 還為那些想要調(diào)用 TeX 生成文本的人提供一個usetex
選項(參見使用 LaTeX 渲染文本 )。
任何文本元素都可以使用數(shù)學(xué)文本羹膳。 你應(yīng)該使用原始字符串(在引號前面加一個'r'
)睡互,并用美元符號($
)包圍數(shù)學(xué)文本,如 TeX陵像。 常規(guī)文本和數(shù)學(xué)文本可以在同一個字符串內(nèi)交錯就珠。 Mathtext 可以使用 Computer Modern 字體(來自 (La)TeX),STIX 字體(為與 Times 混合使用而設(shè)計)或你提供的 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$'
的和,你可以:
r'$\sum_{i=0}^\infty x_i$'
分?jǐn)?shù)澄耍、二項式和堆疊數(shù)
可以使用\frac{}{}
噪珊,\binomial{}{}
和\stackrel{}{}
命令分別創(chuàng)建分?jǐn)?shù)晌缘,二項式和堆疊數(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)$'
根式
根式可以有\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)
所有字體的可用選項為:
命令 | 結(jié)果 |
---|---|
\mathrm{Roman} |
|
\mathit{Italic} |
|
\mathtt{Typewriter} |
|
\mathcal{CALLIGRAPHY} |
使用 STIX 字體時,你也可以選擇:
命令 | 結(jié)果 |
---|---|
\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è)計)
stixsans
: STIX sans-serif
此外,你可以使用\mathdefault{...}
或其別名\mathregular{...}
來使用用于 mathtext 之外的常規(guī)文本的字體舰罚。 這種方法有一些限制纽门,最明顯的是,可以使用很少的符號营罢,但可用于將數(shù)學(xué)表達(dá)式與圖中的其他文本混合赏陵。
自定義字體
mathtext 還提供了一種對數(shù)學(xué)公式使用自定義字體的方法。 這種方法使用起來相當(dāng)棘手饲漾,應(yīng)該看做為有耐心的用戶準(zhǔn)備的試驗特性蝙搔。 通過將rcParam mathtext.fontset
設(shè)置為custom
荆秦,你可以設(shè)置以下參數(shù)茅特,這些參數(shù)控制用于特定數(shù)學(xué)字符集的字體文件樊卓。
參數(shù) | 相當(dāng)于 |
---|---|
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 可能不在正確位置矩欠。
重音符號
重音命令可以位于任何符號之前,在其上添加重音悠夯。 他們中的一些些擁有較長和較短的形式癌淮。
命令 | 結(jié)果 |
---|---|
\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)整為符號的寬度:
命令 | 結(jié)果 |
---|---|
\widehat{xyz} |
|
\widetilde{xyz} |
當(dāng)把重音放在小寫的i
和j
上時應(yīng)該小心沦补。 注意下面的\imath
用來避免i
上額外的點:
r"$\hat i\ \ \hat \imath$"
符號
你也可以使用更大量的 TeX 符號乳蓄,比如\infty
,\leftarrow
夕膀,\sum
虚倒,\int
。
小寫希臘字母 | ||||
---|---|---|---|---|
\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
|
大寫希臘字母 | |||||
---|---|---|---|---|---|
\Delta
|
\Gamma
|
\Lambda
|
\Omega
|
\Phi
|
\Pi
|
\Psi
|
\Sigma
|
\Theta
|
\Upsilon
|
\Xi
|
\mho
|
\nabla
|
希伯來文 | |||
---|---|---|---|
\aleph
|
\beth
|
\daleth
|
\gimel
|
分隔符 | ||||||
---|---|---|---|---|---|---|
/
|
[
|
\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
|
標(biāo)準(zhǔn)函數(shù)名稱 | |||
---|---|---|---|
\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
|
二元運算符和關(guān)系符號 | ||
---|---|---|
\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()