网格数据错误
(改编自:来自 xyz 数据的 Matplotlib 轮廓:griddata 无效索引)
我有一个对应于一组坐标的一些值的矩阵。我想从外部文件加载数据并使用 griddata 对象在点之间进行插值。但是,在运行代码时出现错误:
来自griddata的“builtins.IndexError:索引0超出了轴0的范围,大小为0”。我不懂这啥意思?
一段示例代码:
def main():
#https://stackoverflow.com/questions/13781025/matplotlib-contour-from-xyz-data-griddata-invalid-index
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as ml
ndata = 121
ny, nx = 100, 200
xmin, xmax = 0, 10
ymin, ymax = 0, 10
Data = np.loadtxt('Data.dat')
Data = Data.flatten(1)
x = np.array([j for i in np.arange(0,11,1) for j in np.arange(0,11,1)])
y = np.array([j for i in np.arange(0,11,1) for j in np.arange(0,11,1)])
#x = np.random.randint(xmin, xmax, ndata)
#y = np.random.randint(ymin, ymax, ndata)
xi = np.linspace(xmin, xmax, nx)
yi = np.linspace(ymin, ymax, ny)
zi = ml.griddata(x, y, Data, xi, yi)
plt.contour(xi, yi, zi, 15, linewidths = 0.5, colors = 'k')
plt.pcolormesh(xi, yi, zi, cmap = plt.get_cmap('rainbow'))
plt.scatter(x, y, marker = 'o', c = 'b', s = 5, zorder = 10)
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
plt.show()
Data.dat 可从以下网址获得:http: //pastebin.com/Uk8SHA1F
请注意它是如何与提供 x 或 y 的推导结合使用的,而另一个坐标是随机坐标(已注释),但在对 x 和 y 都使用推导时却不行?