Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlibe代码错误:MaxNLocator似乎没有正确的属性_Python_Matplotlib - Fatal编程技术网

Python matplotlibe代码错误:MaxNLocator似乎没有正确的属性

Python matplotlibe代码错误:MaxNLocator似乎没有正确的属性,python,matplotlib,Python,Matplotlib,当我尝试在运行示例脚本时 在伊皮顿,我得到了 In [1]: %run cmap.py --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) /usr/lib/python2.7/dist-packages/IPython/utils/py3comp

当我尝试在运行示例脚本时 在伊皮顿,我得到了

In [1]: %run cmap.py
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
    173             else:
    174                 filename = fname
--> 175             __builtin__.execfile(filename, *where)

/home/qlnr92/Dropbox/bin/cmap.py in <module>()
     11 cmap = plt.get_cmap('PiYG')
     12 
---> 13 levels = MaxNLocator(nbins=15).tick_values(z.min(), z.max())
     14 norm = BoundaryNorm(levels, ncolors=cmap.N, clip=True)
     15 

AttributeError: MaxNLocator instance has no attribute 'tick_values'
我对matplotlib还很陌生,所以我不确定我会错在哪里。我很确定所有的包都没有问题,因为如果我注释掉任何包含levels变量的东西,它是tick_values方法的输出被分配到的对象,那么图就会很好地显示出来。然而,我想知道出了什么问题

为了安全起见,这里是我在ipython-pylab中使用的经过轻微编辑的脚本

import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
import numpy as np


dx, dy = 0.05, 0.05

y, x = np.mgrid[slice(1, 5 + dy, dy),
                slice(1, 5 + dx, dx)]

z = np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)

z = z[:-1, :-1]
levels = MaxNLocator(nbins=15).tick_values(z.min(), z.max())

cmap = plt.get_cmap('PiYG')
norm = BoundaryNorm(levels, ncolors=cmap.N, clip=True)

plt.subplot(2, 1, 1)
im = plt.pcolormesh(x, y, z, cmap=cmap, norm=norm)
plt.colorbar()
plt.axis([x.min(), x.max(), y.min(), y.max()])
plt.title('pcolormesh with levels')

plt.subplot(2, 1, 2)
plt.contourf(x[:-1, :-1] + dx / 2.,
             y[:-1, :-1] + dy / 2., z, levels=levels,
             cmap=cmap)
plt.colorbar()
plt.title('contourf with levels')

plt.show()

我使用的方法似乎已经被Binu边界方法所取代。勾号值似乎不再存在


参见定位器??MaxNLocator??和其他继承的类文档

您使用的是什么版本的mpl?我不能复制这个,这个例子在我的系统上正确运行。不是在正确的atm机上,但它是通过synaptic Ubuntu12.04提供的最新版本,我相信是1.1.1。我明白了,现在它们已经升级到1.3了,所以也许我应该检查一下版本号!
import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
import numpy as np


dx, dy = 0.05, 0.05

y, x = np.mgrid[slice(1, 5 + dy, dy),
                slice(1, 5 + dx, dx)]

z = np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)

z = z[:-1, :-1]
levels = MaxNLocator(nbins=15).tick_values(z.min(), z.max())

cmap = plt.get_cmap('PiYG')
norm = BoundaryNorm(levels, ncolors=cmap.N, clip=True)

plt.subplot(2, 1, 1)
im = plt.pcolormesh(x, y, z, cmap=cmap, norm=norm)
plt.colorbar()
plt.axis([x.min(), x.max(), y.min(), y.max()])
plt.title('pcolormesh with levels')

plt.subplot(2, 1, 2)
plt.contourf(x[:-1, :-1] + dx / 2.,
             y[:-1, :-1] + dy / 2., z, levels=levels,
             cmap=cmap)
plt.colorbar()
plt.title('contourf with levels')

plt.show()