Python 如何避免pcolor()/imshow()和contour()重叠之间的偏移?

Python 如何避免pcolor()/imshow()和contour()重叠之间的偏移?,python,matplotlib,plot,Python,Matplotlib,Plot,我想显示一个伪彩色图像(例如由pcolor、pcolormesh或imshow生成的)叠加有轮廓线。这三个绘图函数似乎可以偏离一个数据点。下面是一个例子: import numpy from matplotlib import pyplot,cm f = pyplot.figure(figsize=(3,2)) ax = f.add_subplot(111) data = numpy.ones((10,10)) data[5,5] = 2.0 data[0,:] = data[-1,:] =

我想显示一个伪彩色图像(例如由pcolor、pcolormesh或imshow生成的)叠加有轮廓线。这三个绘图函数似乎可以偏离一个数据点。下面是一个例子:

import numpy
from matplotlib import pyplot,cm

f = pyplot.figure(figsize=(3,2))
ax = f.add_subplot(111)

data = numpy.ones((10,10))
data[5,5] = 2.0
data[0,:] = data[-1,:] = 0
data[:,0] = data[:,-1] = 0

X=numpy.linspace(-3,3,10)
Y=numpy.linspace(-2,2,10)

ax.imshow(data,interpolation='nearest',extent=(-3,3,-2,2),aspect='auto')
ax.contour(X,Y,data,cmap=cm.Greys)
f.subplots_adjust(bottom=.2)

pyplot.show()
这将产生(使用TkAgg后端GUI):

将imshow()方法替换为

ax.pcolormesh(X,Y,data)
收益率:

在这两种情况下,轮廓线都与基础图像不匹配

import numpy
from matplotlib import pyplot,cm

f = pyplot.figure()
ax = f.add_subplot(111)

data = numpy.ones((10,10))
data[5,5] = 2.0
data[0,:] = data[-1,:] = 0
data[:,0] = data[:,-1] = 0

ax.imshow(data, interpolation='nearest')
ax.contour(data,levels=[0.0,0.5,1.0,1.5,2.5],cmap=cm.Greys)
ax.invert_yaxis()
pyplot.show()

谢谢您的快速回答。然而,这只适用于非常特殊的情况。我用一个不同的例子更新了我的问题,其中imshow()和pcolor()都会产生奇怪的结果。