Введение
В этом практическом занятии вы научитесь использовать библиотеку Matplotlib для интерполяции данных из треугольной сетки в квадратную сетку. Сначала мы создадим триангуляцию, а затем интерполируем данные с использованием линейных и кубических методов. Наконец, мы построим графики результатов.
Советы по работе с ВМ
После запуска виртуальной машины щелкните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Создание триангуляции
Первым шагом является создание триангуляции с использованием данных x, y и triangles. Затем мы построим график триангуляции.
## Create triangulation.
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)
## Plot the triangulation.
plt.triplot(triang, 'ko-')
plt.title('Triangular grid')
plt.show()
Интерполяция данных методом линейной интерполяции
Вторым шагом является интерполяция данных методом линейной интерполяции. Мы создадим равномерно разнесенную квадратную сетку и затем используем метод LinearTriInterpolator для интерполяции данных. Наконец, мы построим график интерполированных данных.
## Interpolate to regularly-spaced quad grid.
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))
## Interpolate using linear method.
interp_lin = mtri.LinearTriInterpolator(triang, z)
zi_lin = interp_lin(xi, yi)
## Plot the interpolated data.
plt.contourf(xi, yi, zi_lin)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Linear interpolation")
plt.show()
Интерполяция данных методом кубической интерполяции
Третий шаг - интерполировать данные методом кубической интерполяции. Мы будем использовать метод CubicTriInterpolator с параметром kind, установленным на 'geom' или'min_E'. Наконец, мы построим график интерполированных данных.
## Interpolate using cubic method with kind=geom.
interp_cubic_geom = mtri.CubicTriInterpolator(triang, z, kind='geom')
zi_cubic_geom = interp_cubic_geom(xi, yi)
## Plot the interpolated data.
plt.contourf(xi, yi, zi_cubic_geom)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='geom'")
plt.show()
## Interpolate using cubic method with kind=min_E.
interp_cubic_min_E = mtri.CubicTriInterpolator(triang, z, kind='min_E')
zi_cubic_min_E = interp_cubic_min_E(xi, yi)
## Plot the interpolated data.
plt.contourf(xi, yi, zi_cubic_min_E)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='min_E'")
plt.show()
Резюме
В этом практическом занятии мы научились использовать библиотеку Matplotlib для интерполяции данных из треугольной сетки в квадратную сетку. Мы начали с создания триангуляции, а затем интерполировали данные с использованием линейных и кубических методов. Наконец, мы построили графики результатов.