具有不规则间隔样本的2D彩色图(matplotlib.mlab.griddata)

时间:2014-09-09 14:36:30

标签: python matplotlib plot interpolation

cI之前在code review发布了此消息,但在此处将其移至此处,因为我被告知它更合适。

基本上,我想创建一些不规则采样数据的颜色图。我使用matplotlib.mlab.griddata进行插值取得了一些成功。但是,当我绘制插值数据(使用matplotlib.pyplot.imshow)时,域的边缘看起来是空白的。如果我增加网格密度(在代码中增加N)但是没有解决问题,这会变得更好。

我已附上我的代码并想上传我可以生成的情节图片,但仍然缺乏发布图片的声誉;)

编辑:现在已经改变,在Ajean提出的修改后上传了情节:enter image description here

。有人可以帮助我解决出错的问题吗?

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.mlab import griddata

# Generate Data
X=np.random.random(100)
Y=2*np.random.random(100)-1
Z=X*Y

# Interpolation
N=100j       
extent=(0,1,-1,1)
xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N]
resampled=griddata(X,Y,Z,xs,ys,interp='nn')

#Plot

fig = plt.figure()
ax = fig.add_subplot(111)

ax.set_xlabel('X')
ax.set_ylabel('Y')

cplot=ax.imshow(resampled.T,extent=extent) 
ticks=np.linspace(-1,1,11)
cbar=fig.colorbar(magplot,ticks=ticks,orientation='vertical')
cbar.set_label('Value', labelpad=20,rotation=270,size=16)

ax.scatter(X,Y,c='r')

1 个答案:

答案 0 :(得分:1)

这是因为您对随机的调用不会在边界角处为您提供任何值,因此无需进行插值。如果将X和Y定义更改为

# Just include the four corners
X=np.concatenate([np.random.random(100),[0,0,1,1]])
Y=np.concatenate([2*np.random.random(100)-1,[-1,1,1,-1]])

你将填写整件事。