1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import matplotlib.pyplot as plt import matplotlib.tri as mtri import numpy as np
x = np.asarray([0, 1, 2, 3, 0.5, 1.5, 2.5, 1, 2, 1.5]) y = np.asarray([0, 0, 0, 0, 1.0, 1.0, 1.0, 2, 2, 3.0]) triangles = [[0, 1, 4], [1, 2, 5], [2, 3, 6], [1, 5, 4], [2, 6, 5], [4, 5, 7], [5, 6, 8], [5, 8, 7], [7, 8, 9]] triang = mtri.Triangulation(x, y, triangles)
z = np.cos(1.5 * x) * np.cos(1.5 * y) xi, yi = np.meshgrid(np.linspace(0, 3, 20), np.linspace(0, 3, 20))
interp_lin = mtri.LinearTriInterpolator(triang, z) zi_lin = interp_lin(xi, yi)
interp_cubic_geom = mtri.CubicTriInterpolator(triang, z, kind='geom') zi_cubic_geom = interp_cubic_geom(xi, yi)
interp_cubic_min_E = mtri.CubicTriInterpolator(triang, z, kind='min_E') zi_cubic_min_E = interp_cubic_min_E(xi, yi)
fig, axs = plt.subplots(nrows=2, ncols=2) axs = axs.flatten()
axs[0].tricontourf(triang, z) axs[0].triplot(triang, 'ko-') axs[0].set_title('Triangular grid')
axs[1].contourf(xi, yi, zi_lin) axs[1].plot(xi, yi, 'k-', lw=0.5, alpha=0.5) axs[1].plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5) axs[1].set_title("Linear interpolation")
axs[2].contourf(xi, yi, zi_cubic_geom) axs[2].plot(xi, yi, 'k-', lw=0.5, alpha=0.5) axs[2].plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5) axs[2].set_title("Cubic interpolation,\nkind='geom'")
axs[3].contourf(xi, yi, zi_cubic_min_E) axs[3].plot(xi, yi, 'k-', lw=0.5, alpha=0.5) axs[3].plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5) axs[3].set_title("Cubic interpolation,\nkind='min_E'")
fig.tight_layout() plt.show()
|