2012-02-08 48 views
1

試圖從this question重現問題,我發現我不能繪製一個最簡單的輪廓圖。matplotlib等高線圖; '模塊'對象沒有屬性'nextafter'

下面是從gallery

#!/usr/bin/env python 
import matplotlib 
import numpy as np 
import matplotlib.cm as cm 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plt 

delta = 0.025 
x = np.arange(-3.0, 3.0, delta) 
y = np.arange(-2.0, 2.0, delta) 
X, Y = np.meshgrid(x, y) 
#Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
#Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
# difference of Gaussians 
Z = 10.0 * np.exp(X-Y) #(Z2 - Z1) 

plt.figure() 
CS = plt.contour(X,Y,Z) 

plt.show() 

,給了我一個(hopefelly)相關的實例的簡化版本:

Traceback (most recent call last): 
    File "./contour.py", line 19, in <module> 
    CS = plt.contour(X,Y,Z) 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/pyplot.py", line 2188, in contour 
    ret = ax.contour(*args, **kwargs) 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/axes.py", line 7316, in contour 
    return mcontour.QuadContourSet(self, *args, **kwargs) 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/contour.py", line 1106, in __init__ 
    ContourSet.__init__(self, ax, *args, **kwargs) 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/contour.py", line 720, in __init__ 
    self._process_colors() 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/contour.py", line 954, in _process_colors 
    self.set_clim(self.vmin, self.vmax) 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/cm.py", line 248, in set_clim 
    self.changed() 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/contour.py", line 841, in changed 
    self.to_rgba(self.cvalues, alpha=self.alpha)] 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/cm.py", line 214, in to_rgba 
    x = self.cmap(x, alpha=alpha, bytes=bytes) 
    File "/usr/local/lib/python2.6/dist-packages/matplotlib/colors.py", line 520, in __call__ 
    cbook._putmask(xa, xa==1.0, np.nextafter(xa.dtype.type(1), 
AttributeError: 'module' object has no attribute 'nextafter' 

的誤差並不取決於我是否堅持原來的'高斯差異'或者嘗試繪製一個指數,就像上面的代碼片斷一樣。

我是否錯過了一些微不足道的東西?

如果它是相關的,我在Ubuntu 10.04

+1

爲了幫助縮小範圍,代碼適用於使用matplotlib「1.0.1」的Ubuntu'11.10'。 – Hooked 2012-02-08 18:35:13

+2

我會考慮改變你的問題的標題。它與等高線圖無關。這是一個很好的問題,而其他人可能會遇到同樣的問題。就像「錯誤運行matplotlib:AttributeError:'模塊'對象沒有屬性'nextafter'」 – Yann 2012-02-08 18:41:41

回答

2

使用matplotlib 1.1.0沒有你沒有做錯什麼。你需要升級Numpy。我遇到了同樣的問題,在對Numpy 1.6.1進行更新後,事情進展順利。

使用Lucid Lynx(Ubuntu 10.04),您可以訪問numpy 1.3.0。缺少的nextafter功能僅在numpy 1.4(感謝DSM)之後可用。

+2

我剛剛檢查過,並且nextafter函數從numpy 1.3.0中缺失並且出現在numpy 1.4.1及更高版本中,所以我打賭numpy版本是1.3.0。 – DSM 2012-02-08 18:45:17

+0

@DSM - 你太善良了... – Yann 2012-02-08 19:00:50

+0

嘿,每個人都有足夠的代表。 :-) – DSM 2012-02-08 19:01:25

相關問題