2014-01-26 51 views
0

我只是想設置與pyplot軸界限,但似乎沒有正確檢測軸功能的參數,因爲它會返回該錯誤:Pyplot錯誤調用軸的功能時:

TypeError: 'list' object is not callable. 

它與軸功能有關,但我看不出問題在哪裏。我的代碼即給予該問題的部分如下:

plt.figure(1) 
    plt.plot(x[:,0],x[:,1]) 
    ax=[0.0,10.0,0.0,10.0] 
    plt.axis(ax) 
+0

什麼是'x'?這將幫助我們重現你正在做的事情。 – chrisaycock

+3

發佈*全部*追蹤和所有相關的代碼。 – Blender

+0

我剛剛複製了發佈用於測試的代碼EMS,但我仍然遇到同樣的錯誤,但它爲他工作。我的pyplot安裝會出現問題嗎? – user3236128

回答

0

如果我使用x = numpy.random.randn(10,2)那麼這段代碼的其餘部分作品沒有問題,使用NumPy的1.4,matplotlib 1.1.1和Python 2.7.3 。 pyplot API中的axis函數接受包含4個值的list作爲第一個位置參數,所以此處的用法是正確的。您遇到的錯誤不是來自這段代碼。

如果你提供你想要繪製的數據和代碼,並追蹤消息的全部細節的全部細節,也許我們可以幫助你。

# Works fine assuming packages are installed... 
import numpy as np 
import matplotlib.pyplot as plt 
x = np.random.randn(10,2) 
plt.figure(1) 
plt.plot(x[:,0], x[:,1]) 
ax = [0.0, 10.0, 0.0, 10.0] 
plt.axis(ax) 
plt.show() 

鑑於您已經發布錯誤消息,一種可能性是,你已經採取的list對象(在你的代碼中調用ax的東西)的實例是打算作爲一個軸的邊界將其與API函數axis混淆。在這種情況下,看看你的代碼,你把函數調用語法ax變量名後,如地方:

ax(x1, x2, y1, y2) 

,而不是

plt.axis(x1, x2, y1, y2) 

在第一種情況下,嘗試以「呼叫」 ax一些參數是不會成功的,因爲Python的list類沒有實現__call__協議,使一個變量的變量名後後面添加函數調用的符號,()(可能帶有參數)即是一個實例list會導致你看到的錯誤。

其他的事情可能會導致它過,但是這是在給定的問題提供有限的信息我最好的猜測。

+0

好的,我認爲我的pyplot庫可能有問題。我只是複製並粘貼了您發佈的隨機x代碼,並得到了相同的錯誤。我正在使用包含在python 2.7中的winpython中的發行版。 – user3236128