2012-02-08 230 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

相关问题