2012-05-11 81 views
7

我嘗試打印只有一行的figlegend,但我只收到第一個字母。我有使劇情下面的腳本:Matplotlib:figlegend只打印第一個字母

from pylab import * 
k = plot((0, 1),(1, 1)) 
figlegend((k),('Limit'),loc='lower center') 
savefig('test.pdf') 

輸出是:output

我在做什麼錯? (或者它是一個錯誤?)

+2

'('Limit')'在python中不是作爲元組插入的,'('Limit',)'is。我的猜測是'['Limit']'應該工作得很好。 – Hooked

回答

15

我還沒有想出它是一個錯誤還是故意(出於某種原因)在matplotlib,但爲了得到一個完整的圖例標籤,你需要留下尾隨的逗號標籤列表:

figlegend((k),('Limit',),loc='lower center') 

改變該行並代碼:

from pylab import * 
k = plot((0, 1),(1, 1)) 
figlegend((k),('Limit',),loc='lower center') 
savefig('test.pdf') 

生產的數字:

full legend label

+3

這是Python的一個功能:要指定單元素列表,需要使用該語法將其與parens中的某些標量值區分開來。 http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences –

+0

這是我遇到過的Python中最奇怪的怪癖。非常感謝你發現了這一點。 – GLaDER