scipy.interpolate.rbf和matplotlib.pyplot.contourf有什么区别?

时间:2017-06-20 14:22:27

标签: python numpy matplotlib scipy data-visualization

我在csv文件中有3列数据,我打算用它来创建等高线图。这三列不是网格数据。 最初,我使用以下函数创建了网格数据:

def grid(x, y, z, resX=100, resY=100):
  xi = linspace(min(x), max(x), resX)
  yi = linspace(min(y), max(y), resY)
  Z = griddata(x, y, z, xi, yi, interp='linear')
  X, Y = meshgrid(xi, yi)
  return X, Y, Z

然后我导入数据,准备好并将其传递给函数。

X, Y, Z = grid(x, y, z)
contour = plt.contourf (X, Y, Z)

我使用matplotlib.pyplot.contourf获得了以下图像Contour 1

现在我尝试使用我在网上使用scipy.interpolate.rbf找到的代码片段创建一个类似的等高线图,它看起来像Contour 2

xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 100)
xi, yi = np.meshgrid(xi, yi)


rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
zi = rbf(xi, yi)

plt.imshow(zi)

rbf功能和轮廓功能有什么区别?对于相同的数据,rbf函数创建完全占用的等高线图,而contourf函数仅绘制(x,y) - >的数据。 ž。

我希望创建一个完全占用的图,就像rbf创建的图一样但是它不能处理大数据,因为我得到以下错误

LinAlgError: Matrix is singular.

0 个答案:

没有答案