Matplotlib 中文用戶指南 4.6 編寫數(shù)學(xué)表達(dá)式

編寫數(shù)學(xué)表達(dá)式

原文:Writing mathematical expressions

譯者:飛龍

協(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.fonttypepdf.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ù)澄耍、二項式和堆疊數(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)$'

這里st是斜體(默認(rèn))的變量维蒙,sin是羅馬字體掰吕,振幅A是書法字體。 注意在上面的例子中颅痊,Asin之間的間距被擠壓殖熟。 你可以使用間距命令在它們之間添加一些空格:

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)把重音放在小寫的ij上時應(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()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末易猫,一起剝皮案震驚了整個濱河市耻煤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌准颓,老刑警劉巖哈蝇,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異攘已,居然都是意外死亡炮赦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門样勃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吠勘,“玉大人,你說我怎么就攤上這事彤灶】从祝” “怎么了批旺?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵幌陕,是天一觀的道長。 經(jīng)常有香客問我汽煮,道長搏熄,這世上最難降的妖魔是什么棚唆? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮心例,結(jié)果婚禮上宵凌,老公的妹妹穿的比我還像新娘。我一直安慰自己止后,他們只是感情好瞎惫,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著译株,像睡著了一般瓜喇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歉糜,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天乘寒,我揣著相機(jī)與錄音,去河邊找鬼匪补。 笑死伞辛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夯缺。 我是一名探鬼主播蚤氏,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踊兜!你這毒婦竟也來了瞧捌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤润文,失蹤者是張志新(化名)和其女友劉穎姐呐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體典蝌,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡曙砂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了骏掀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸠澈。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖截驮,靈堂內(nèi)的尸體忽然破棺而出笑陈,到底是詐尸還是另有隱情,我是刑警寧澤葵袭,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布涵妥,位于F島的核電站,受9級特大地震影響坡锡,放射性物質(zhì)發(fā)生泄漏蓬网。R本人自食惡果不足惜窒所,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帆锋。 院中可真熱鬧吵取,春花似錦、人聲如沸锯厢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实辑。三九已至臣疑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徙菠,已是汗流浹背讯沈。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留婿奔,地道東北人党瓮。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓碗暗,卻偏偏與公主長得像奕锌,于是被迫代替她去往敵國和親山害。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容