我在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.