撰寫數學表達式#

Matplotlib 實作了一個輕量級的 TeX 表達式解析器和佈局引擎,而 *Mathtext* 是此引擎支援的 Tex 標記的子集。請注意,如果 rcParams["text.usetex"] (預設:False) 為 *True*,Matplotlib 也可以直接使用 TeX 呈現所有文字;詳情請參閱使用 LaTeX 呈現文字。如果 rcParams["text.usetex"] (預設:False) 為 *False*,則可以使用 Mathtext 支援。

任何字串都可以透過將字串放在一對錢幣符號 '$' 內來當作 Mathtext 處理。Mathtext 通常包含許多反斜線 '\';為了避免反斜線需要跳脫,Mathtext 通常使用原始字串撰寫。例如

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(3, 3), linewidth=1, edgecolor='black')
fig.text(.2, .7, "plain text: alpha > beta")
fig.text(.2, .5, "Mathtext: $\\alpha > \\beta$")
fig.text(.2, .3, r"raw string Mathtext: $\alpha > \beta$")
mathtext

另請參閱

Mathtext 範例

由於 Matplotlib 隨附 Mathtext 解析器和引擎,因此使用 Mathtext *不需要* 安裝 TeX。Mathtext 佈局引擎是對 Donald Knuth 的 TeX 中的佈局演算法進行相當直接的改編。若要使用不同的 TeX 引擎呈現數學文字,請參閱使用 LaTeX 呈現文字

注意

若要在文件中產生與 mathtext 產生的輸出完全相同的 html 輸出,請使用matplotlib.sphinxext.mathmpl Sphinx 擴充功能。

特殊字元#

Mathtext 必須放在一對(美金)錢幣符號 '$' 之間。包含 Mathtext 的字串中的常值錢幣符號 '$' 必須使用反斜線跳脫:'\$'。字串可能包含多對錢幣符號,導致多個 Mathtext 表達式。具有奇數個錢幣符號的字串會僅呈現為純文字。

fig = plt.figure(figsize=(3, 3), linewidth=1, edgecolor='black')
fig.suptitle("Number of unescaped $")
fig.text(.1, .7, r"odd: $ \alpha $ = $1")
fig.text(.1, .5, r"even: $ \beta $= $ 2 $")
fig.text(.1, .3, r'odd: $ \gamma $= \$3 $')
fig.text(.1, .1, r'even: $ \delta $ = $ \$4 $')
Number of unescaped $

雖然 Mathtext 的目標是與一般 TeX 相容,但它在何時需要跳脫特殊字元時會有所不同。在 TeX 中,錢幣符號在非數學文字中必須跳脫 '\$',而在 Matplotlib 中,撰寫 Mathtext 時必須跳脫錢幣符號。

這些其他特殊字元在非數學 TeX 中也會跳脫,而在 Matplotlib 中,其行為取決於如何設定rcParams["text.usetex"] (預設:False)

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

請參閱 usetex 教學以取得更多資訊。

下標與上標#

若要製作下標和上標,請使用 '_''^' 符號

r'$\alpha_i > \beta_i$'
\[\alpha_i > \beta_i\]

若要正確顯示多字母的下標或上標,您應該將它們放在大括號 {...}

r'$\alpha^{ic} > \beta_{ic}$'
\[\alpha^{ic} > \beta_{ic}\]

有些符號會自動將其下標/上標放在運算子下方和上方。例如,若要寫出從 再到 的總和,您可以執行

r'$\sum_{i=0}^\infty x_i$'
\[\sum_{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}$'

產生

\[\frac{5 - \frac{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)$'
\[\left(\frac{5 - \frac{1}{x}}{4}\right)\]

根式#

可以使用 \sqrt[]{} 命令來產生根式。例如

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

任何基底都可以(選擇性地)在方括號內提供。請注意,基底必須是簡單的表達式,且不能包含佈局命令,例如分數或下標/上標

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

字型#

預設字型是數學符號的*斜體*。

可以使用 rcParams["mathtext.default"] (預設:'it') 來變更此預設值。若要設定 rcParams,請參閱使用樣式表和 rcParams 自訂 Matplotlib。例如,將預設值設定為 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" 是斜體字型 (預設) 中的變數,"sin" 是羅馬字型,而振幅 "A" 是書法字型。請注意,在上面的範例中,書法 A 會擠進 sin 中。您可以使用間距命令在它們之間新增一些空白

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

Mathtext 可以使用 DejaVu Sans (預設)、DejaVu Serif、(La)TeX 中的 Computer Modern 字型、STIX 字型 (這些字型旨在與 Times 完美融合),或您提供的 Unicode 字型。Mathtext 字型可以透過 rcParams["mathtext.fontset"] (預設:'dejavusans') 來選取。

所有字型可用的選項為

命令

結果

\mathrm{Roman}

\mathit{Italic}

\mathtt{Typewriter}

\mathcal{CALLIGRAPHY}

使用STIX 字型時,您也可以選擇

命令

結果

\mathbb{blackboard}

\mathrm{\mathbb{blackboard}}

\mathfrak{Fraktur}

\mathsf{sansserif}

\mathrm{\mathsf{sansserif}}

\mathbfit{bolditalic}

此外,還有五種全域「字體集」可供選擇,這些字體集可透過 mathtext.fontset 參數在 matplotlibrc 中選取。

dejavusans:DejaVu Sans
dejavuserif:DejaVu Serif
cm:Computer Modern (TeX)
stix:STIX (設計為與 Times 字體良好搭配)
stixsans:STIX sans-serif

此外,您可以使用 \mathdefault{...} 或其別名 \mathregular{...} 來使用 Mathtext 之外用於一般文字的字體。此方法有一些限制,最明顯的是可用的符號會少得多,但它可以讓數學表達式與圖表中的其他文字更好地融合。

為了與流行的套件相容,可以使用 \text{...},它使用 \mathrm{...} 字體,但在其他方面保留空格並將 - 呈現為破折號(而非減號)。

自訂字體#

Mathtext 也提供一種方法可以使用自訂字體進行數學排版。這種方法使用起來相當棘手,應該被認為是僅適用於耐心使用者的實驗性功能。將 rcParams["mathtext.fontset"] (預設值:'dejavusans') 設定為 custom 後,您可以設定以下參數,這些參數控制特定的一組數學字元要使用哪個字體檔案。

參數

對應到

mathtext.it

\mathit{} 或預設斜體

mathtext.rm

\mathrm{} 羅馬體(正體)

mathtext.tt

\mathtt{} 打字機體(等寬)

mathtext.bf

\mathbf{} 粗體

mathtext.bfit

\mathbfit{} 粗斜體

mathtext.cal

\mathcal{} 花體

mathtext.sf

\mathsf{} 無襯線字體

每個參數都應設定為 fontconfig 字體描述符,如 Matplotlib 中的字體 中所定義。所使用的字體應具有 Unicode 對應,以便找到任何非拉丁字元,例如希臘字母。如果您想使用自訂字體中不包含的數學符號,您可以將 rcParams["mathtext.fallback"] (預設值:'cm') 設定為 'cm''stix''stixsans',這將使 Mathtext 系統在自訂字體中找不到特定字元時,使用替代字體的字元。

請注意,Unicode 中指定的數學符號已隨著時間的推移而演變,而且許多字體的字形可能不在 Mathtext 的正確位置。

重音符號#

重音命令可以放在任何符號之前,以在其上方添加重音符號。其中一些有長短兩種形式。

命令

結果

\acute a\'a

\bar a

\breve a

\dot a\.a

\ddot a\''a

\dddot a

\ddddot a

\grave a\`a

\hat a\^a

\tilde a\~a

\vec a

\overline{abc}

此外,還有兩個特殊的重音符號會自動調整為下方符號的寬度

命令

結果

\widehat{xyz}

\widetilde{xyz}

在小寫 i 和 j 上加上重音符號時應格外小心。請注意,在以下範例中,\imath 用於避免 i 上方的額外點

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

符號#

您也可以使用大量的 TeX 符號,例如 \infty\leftarrow\sum\int

小寫希臘字母

α \alpha

β \beta

γ \gamma

δ \delta

ε \epsilon

ε \varepsilon

ζ \zeta

η \eta

θ \theta

ϑ \vartheta

ι \iota

κ \kappa

ϰ \varkappa

λ \lambda

μ \mu

ν \nu

ξ \xi

π \pi

ϖ \varpi

ρ \rho

ϱ \varrho

σ \sigma

ς \varsigma

τ \tau

υ \upsilon

χ \chi

ψ \psi

ω \omega

ϕ \phi

φ \varphi

ϝ \digamma

大寫希臘字母

Γ \Gamma

Δ \Delta

Θ \Theta

Λ \Lambda

Ξ \Xi

Π \Pi

Σ \Sigma

Υ \Upsilon

Φ \Phi

Ψ \Psi

Ω \Omega

希伯來字母

\daleth

\gimel

\beth

\aleph

拉丁語命名字元

Å \AA

Æ \AE

Ð \DH

Ø \O

Þ \Thorn

ß \ss

å \aa

æ \ae

ð \eth

ð \dh

ø \o

þ \thorn

Œ \OE

œ \oe

分隔符號

( (

( \leftparen

) \rightparen

) )

. .

/ /

< <

> >

[ \lbrack

[ [

\ \backslash

| \vert

| |

] \rbrack

] ]

{ \{

{ \lbrace

{ \leftbrace

} \rbrace

} \}

} \rightbrace

\|

\Vert

\uparrow

\downarrow

\updownarrow

\Uparrow

\Downarrow

\Updownarrow

\lceil

\rceil

\lfloor

\rfloor

\langle

\rangle

\lgroup

\rgroup

大型符號

\prod

\coprod

\sum

\int

\iint

\iiint

\oint

\oiint

\oiiint

\bigwedge

\bigvee

\bigcap

\bigcup

\bigodot

\bigoplus

\bigotimes

\biguplus

\bigsqcup

\iiiint

標準函數名稱

Pr \Pr

arccos \arccos

arcsin \arcsin

arctan \arctan

arg \arg

cos \cos

cosh \cosh

cot \cot

coth \coth

csc \csc

deg \deg

det \det

dim \dim

exp \exp

gcd \gcd

hom \hom

inf \inf

ker \ker

lg \lg

lim \lim

liminf \liminf

limsup \limsup

ln \ln

log \log

max \max

min \min

sec \sec

sin \sin

sinh \sinh

sup \sup

tan \tan

tanh \tanh

二元運算符號

* *

+ +

- -

± \pm

× \times

÷ \div

\dagger

\ddagger

\mp

\dotplus

\slash

\setminus

\ast

\circ

\bullet

\wedge

\vee

\cap

\cup

\dotminus

\minuscolon

\dotsminusdots

\wr

\cupdot

\uplus

\sqcap

\sqcup

\oplus

\ominus

\otimes

\oslash

\odot

\circledcirc

\circledast

\circleddash

\boxplus

\boxminus

\boxtimes

\boxdot

\unlhd

\unrhd

\intercal

\veebar

\barwedge

\barvee

\diamond

\cdot

\star

\divideontimes

\leftthreetimes

\rightthreetimes

\curlyvee

\curlywedge

\Cap

\Cup

\doublebarwedge

\obar

\bigtriangleup

\rhd

\triangleright

\bigtriangledown

\lhd

\triangleleft

\bigcirc

\boxbar

⨿ \amalg

\merge

關係符號

: :

< <

= =

= \equal

> >

϶ \backepsilon

\dots

\in

\notin

\smallin

\ni

\notsmallowns

\smallowns

\propto

\varpropto

\rightangle

\mid

\nmid

\parallel

\nparallel

\therefore

\because

\ratio

\sim

\backsim

\nsim

\eqsim

\simeq

\nsimeq

\cong

\simneqq

\ncong

\approx

\napprox

\approxeq

\approxident

\backcong

\asymp

\Bumpeq

\bumpeq

\doteq

\doteqdot

\Doteq

\fallingdotseq

\risingdotseq

\coloneq

\eqcolon

\eqcirc

\circeq

\arceq

\wedgeq

\veeeq

\stareq

\triangleq

\triangleeq

\eqdef

\measeq

\questeq

\ne

\neq

\equiv

\nequiv

\Equiv

\leq

\geq

\leqq

\geqq

\lneqq

\gneqq

\ll

\gg

\between

\nless

\ngtr

\nleq

\ngeq

\lesssim

\gtrsim

\nlesssim

\ngtrsim

\lessgtr

\gtrless

\nlessgtr

\ngtrless

\prec

\succ

\preceq

\preccurlyeq

\succeq

\succcurlyeq

\precsim

\succsim

\nprec

\nsucc

\subset

\supset

\nsubset

\nsupset

\subseteq

\supseteq

\nsubseteq

\nsupseteq

\subsetneq

\supsetneq

\sqsubset

\sqsupset

\sqsubseteq

\sqsupseteq

\oequal

\vdash

\dashv

\top

\bot

\rightassert

\models

\vDash

\Vdash

\Vvdash

\rightModels

\nvdash

\nvDash

\nVdash

\nVDash

\scurel

\trianglelefteq

\trianglerighteq

\measuredrightangle

\varlrtriangle

\bowtie

\ltimes

\rtimes

\backsimeq

\Subset

\Supset

\pitchfork

\equalparallel

\lessdot

\gtrdot

\lll

\ggg

\lesseqgtr

\gtreqless

\eqless

\eqgtr

\curlyeqprec

\curlyeqsucc

\npreccurlyeq

\nsucccurlyeq

\nsqsubseteq

\nsqsupseteq

\sqsubsetneq

\sqsupsetneq

\lnsim

\gnsim

\precnsim

\succnsim

\ntriangleleft

\ntriangleright

\ntrianglelefteq

\ntrianglerighteq

\disin

\isins

\varisins

\isindot

\isinobar

\varisinobar

\isinvb

\isinE

\nisd

\nis

\varnis

\niobar

\varniobar

\bagmember

\frown

\smile

\triangle

\blacktriangleright

\triangleright

\vartriangleright

\blacktriangleleft

\triangleleft

\vartriangleleft

\perp

\Join

\leqslant

\geqslant

\lessapprox

\gtrapprox

\lnapprox

\gnapprox

\lesseqqgtr

\gtreqqless

\eqslantless

\eqslantgtr

\precapprox

\succapprox

\precnapprox

\succnapprox

\subseteqq

\supseteqq

\subsetneqq

\supsetneqq

箭頭符號

\overleftarrow

\overleftrightarrow

\leftarrow

\uparrow

\to

\rightarrow

\downarrow

\leftrightarrow

\updownarrow

\nwarrow

\nearrow

\searrow

\swarrow

\nleftarrow

\nrightarrow

\leftsquigarrow

\rightsquigarrow

\twoheadleftarrow

\twoheaduparrow

\twoheadrightarrow

\twoheaddownarrow

\leftarrowtail

\rightarrowtail

\mapsfrom

\mapsup

\mapsto

\mapsdown

\updownarrowbar

\hookleftarrow

\hookrightarrow

\looparrowleft

\looparrowright

\leftrightsquigarrow

\nleftrightarrow

\downzigzagarrow

\Lsh

\Rsh

\Ldsh

\Rdsh

\curvearrowleft

\curvearrowright

\circlearrowleft

\cwopencirclearrow

\circlearrowright

\leftharpoonup

\leftharpoondown

\upharpoonright

\upharpoonleft

\rightharpoonup

\rightharpoondown

\downharpoonright

\downharpoonleft

\rightleftarrows

\updownarrows

\leftrightarrows

\leftleftarrows

\upuparrows

\rightrightarrows

\downdownarrows

\leftrightharpoons

\rightleftharpoons

\nLeftarrow

\nLeftrightarrow

\nRightarrow

\Leftarrow

\Uparrow

\Rightarrow

\Downarrow

\Leftrightarrow

\Updownarrow

\Nwarrow

\Nearrow

\Searrow

\Swarrow

\Lleftarrow

\Rrightarrow

\rightzigzagarrow

\leadsto

\barleftarrow

\rightarrowbar

\cupleftarrow

\multimap

\longleftarrow

\longrightarrow

\longleftrightarrow

\Longleftarrow

\Longrightarrow

\Longleftrightarrow

\longmapsto

\dashleftarrow

\dashrightarrow

點符號

\ldots

\therefore

\because

\Colon

\vdots

\cdots

\adots

\ddots

黑板粗體字元

\BbbC

\BbbN

\BbbP

\BbbQ

\BbbR

\BbbZ

手寫體字元

\scrg

\scrH

\scrI

\scrL

\scrR

\scrB

\scre

\scrE

\scrF

\scrM

\scro

哥德體字元

\frakZ

\frakC

其他符號

$ \$

¢ \cent

£ \sterling

¥ \yen

§ \S

© \copyright

¬ \neg

® \circledR

° \degree

\P

ħ \hbar

ı \imath

ı \i

Ł \L

ł \l

ƛ \lambdabar

ȷ \jmath

\dag

\ddag

\perthousand

\prime

\backprime

\hslash

\Im

\ell

\wp

\Re

\mho

\Finv

\Game

\forall

\complement

\partial

\exists

\nexists

\emptyset

\varnothing

\increment

\nabla

\QED

\infty

\angle

\measuredangle

\sphericalangle

\ac

\sinewave

\hermitmatrix

\circledS

\blacksquare

\triangle

\vartriangle

\blacktriangle

\blacktriangledown

\triangledown

\bigstar

\danger

\spadesuit

\heartsuit

\diamondsuit

\clubsuit

\clubsuitopen

\flat

\natural

\sharp

\checkmark

\maltese

如果特定符號沒有名稱(如同 STIX 字體中許多較不常用的符號),也可以使用 Unicode 字元。

r'$\u23ce$'

由 Sphinx-Gallery 產生的範例集