matplotlib等高线图;'module'对象没有属性'nextafter
我在尝试复现这个问题时,发现我连最简单的轮廓图都画不出来。
这里有一个简化版的(希望能相关)例子,来自这个画廊。
#!/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()
运行后我得到了这个:
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上使用的是matplotlib 1.1.0
。
1 个回答
2
你没有做错什么。你需要升级一下Numpy。我之前也遇到过同样的问题,升级到Numpy 1.6.1后,一切就顺利了。
如果你使用的是Lucid Lynx(Ubuntu 10.04),你可以找到 numpy 1.3.0。而缺少的 nextafter
函数只有在 numpy 1.4 及以上版本中才有(感谢 DSM 的帮助)。