当我尝试运行示例脚本时 http://matplotlib.org/examples/images_contours_and_fields/pcolormesh_levels.html 在ipython中,我得到了
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'
也
In [18]: dir(levels)
Out[18]:
['DummyAxis',
'MAXTICKS',
'__call__',
'__doc__',
'__init__',
'__module__',
'_integer',
'_nbins',
'_prune',
'_steps',
'_symmetric',
'_trim',
'autoscale',
'axis',
'bin_boundaries',
'create_dummy_axis',
'default_params',
'pan',
'raise_if_exceeds',
'refresh',
'set_axis',
'set_bounds',
'set_data_interval',
'set_params',
'set_view_interval',
'view_limits',
'zoom']
我对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()
)
答案 0 :(得分:0)
似乎我使用的方法已被bin_boundaries
方法取代。 tick_values
似乎不再存在......
看Locator? MaxNLocator?和其他继承的类文档