def z_interpolate(xdata, ydata, zdata):
Zi_0 = interpolate.griddata((xdata, ydata),
zdata, (X, Y), method='nearest')
Zi_1 = interpolate.griddata((xdata, ydata),
zdata, (X, Y), method='linear')
Zi_3 = interpolate.griddata((xdata, ydata),
zdata, (X, Y), method='cubic')
return Zi_0, Zi_1, Zi_3
fig, axes = plt.subplots(3, 3, figsize=(8, 8),
sharex=True, sharey=True)
n_vec = [50, 150, 500]
for idx, n in enumerate(n_vec):
Zi_0, Zi_1, Zi_3 = z_interpolate(xdata[:n],
ydata[:n],
zdata[:n])
axes[idx, 0].contourf(X, Y, Zi_0, 15, cmap=plt.cm.RdBu)
axes[idx, 0].set_ylabel(f'{n} data points\ny', fontsize=10)
axes[idx, 0].set_title("nearest", fontsize=10)
axes[idx, 1].contourf(X, Y, Zi_1, 15, cmap=plt.cm.RdBu)
axes[idx, 1].set_title("linear", fontsize=10)
axes[idx, 2].contourf(X, Y, Zi_3, 15, cmap=plt.cm.RdBu)
axes[idx, 2].set_title("cubic", fontsize=10)
for m in range(len(n_vec)):
axes[idx, m].set_xlabel("x", fontsize=10)