【发布时间】:2015-03-23 11:31:40
【问题描述】:
以下代码是我遇到的问题的简化版本:
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np
def grid(x, y, z, resX=100, resY=100):
xi = np.linspace(np.min(x), np.max(x), resX)
yi = np.linspace(np.min(y), np.max(y), resY)
#Z = griddata(x, y, z, xi, yi)
Z = griddata(x, y, z, xi, yi, interp='linear')
X, Y = np.meshgrid(xi, yi)
return X, Y, Z
data = np.random.randint(200,size = (40,20))
X = np.arange(40)
Y = np.arange(20)
x, y = np.meshgrid(X, Y)
z = np.array(data)
X, Y, Z = grid(x.ravel(), y.ravel(), z.ravel(), resX=50, resY=50)
plt.figure()
plt.subplot(1,2,1)
plt.imshow(data)
plt.subplot(1,2,2)
plt.imshow(Z)
plt.show()
只要我使用注释行
Z = griddata(x, y, z, xi, yi)
而不是
Z = griddata(x, y, z, xi, yi, interp='linear')
一切正常。一旦我使用线性插值启动代码,我就会得到一个
raise ValueError("output grid must have constant spacing"
ValueError: output grid must have constant spacing when using interp='linear'
那 np.linspace() 怎么可能不会产生恒定的间距,或者我错过了什么? (显然,我的真实数据比示例中使用的要复杂得多,而且间隔不相等,因此确实需要使用 griddata!)
【问题讨论】:
-
:代码运行良好 gruddata , interp='linear''..
-
你使用的是哪个版本的matplotlib?
-
我使用的是 numpy 1.8.2 和 matplotlib 1.3.1。然而几分钟前,我遇到了这个古老而相同的问题stackoverflow.com/questions/12338649/mlab-griddata-bug。看来他也遇到了同样的问题,最后也没能解决(而是改用scipy.griddata)。
-
:嗯,试试看是否有效。
标签: python matplotlib interpolation