2012-12-21 91 views
1

我正在做一個HIST情節,我想在圖中顯示的一些數字,所以我把在文本框中使用mathtext的文字,但我不工作,我看不到爲什麼。matplotlib mathtext不起作用

a = [2086., 360.5, 1000.] 

b = [977., 37., 498.] 

c = [4512., 690., 378.] 


textstr = r'$\per50=%.2f$\n$\per16=%.2f$\n$\per84=%.2f$'%(a[0],b[0],c[0]) 

    # these are matplotlib.patch.Patch properties 
    props = dict(boxstyle='round', facecolor='wheat', alpha=0.75) 

    # place a text box in upper left in axes coords 
    ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14, 
      verticalalignment='top', bbox=props) 

在我的身影月底,我收到此錯誤:

matplotlib.pyparsing.ParseFatalException: Expected end of math '$' 
$\per50=2086.00$\n$\per16=977.00$\n$\per84=4512.00$ (at char 0), (line:1, col:1) 

我希望你能幫幫我!

+0

'\ per'應該顯示什麼? –

回答

3

你得到的錯誤,因爲該命令$\per$不存在。這是你定義的乳膠命令嗎?如果將matplotlib參數text.usetex=True,可以設置一個乳膠序言和定義命令中指定,例如:

rc('text', usetex=True) 
rc('text.latex', preamble='something') 

但我不認爲這是可以用來定義新的命令(和使用的序言不鼓勵)。所以你最好的選擇是在matplotlib中明確地寫出什麼\per代表什麼。

+0

謝謝!我現在就這樣做了:textstr ='per50 ='+ str(a [0])+'\ nper16 ='+ str(b [0])+'\ nper84 ='+ str(c [0]) ,這可能不是「完美」的方式,但它有效。但至少我現在知道,錯誤是什麼。 Thanx –

+2

很高興幫助。順便說一下,我在你的個人資料中看到你從未接受過答案。在這個網站上,這是一種賦予人們認可的方式,獎勵人們回答問題,並且引導那些到達這裏的人們提出同樣的問題。所以你應該考慮接受更多的答案。 – tiago

+0

啊,好的謝謝。不知道。 –