Создание 2D цветовой диаграммы путем интерполяции нерегулярных данных x, y, z в пределах определенной границы - PullRequest
0 голосов
/ 29 марта 2019

У меня есть три 1d массива x, y и z.x и y описывают положение амплитуды z.Данные расположены нерегулярно.Я хочу нанести эти данные на двухцветный график и интерполировать пустое пространство, используя значения точек.Эта проблема уже была решена здесь График контура / imshow для нерегулярных данных XYZ .

Мое дополнительное препятствие состоит в том, что я хочу, чтобы интерполяция происходила только с точками на и в пределах определенной границы.Граница имеет следующую Т-форму

Я попытался интерполировать данные, используя следующий код Python:

import numpy as np
import matplotlib.pyplot as plt

x_boundary = [6, 12, 12, 18, 18, 12, 6, 0, 0, 6]
y_boundary = [0, 0, 6, 6, 12, 12, 12, 12, 6, 6]
z_boundary = [4.24, 4.24, 3, 4.24, 4.24, 3, 3, 4.24, 4.24, 3]

x_surface = [7, 9, 11, 10, 11, 10, 12, 15, 17, 17, 16, 14, 11, 8, 5, 2, 1, 3, 6, 8, 8, 8, 7]
y_surface = [1, 1, 1, 3, 4, 6, 8, 7, 8, 9, 10, 11, 10, 11, 10, 11, 8, 7, 7, 8, 5, 4, 3]
z_surface = [2.83, 2, 2.83, 1, 2, 1, 1, 2, 2.23, 2, 1.4, 2, 1, 2, 1, 2.23, 2.23, 2, 2, 1, 1, 1, 2]

x = x_boundary + x_surface
y = y_boundary + y_surface
z = z_boundary + z_surface

plt.plot(x_boundary,y_boundary, 'ko')
plt.tricontourf(x,y,z, 50)
plt.colorbar()
plt.savefig('t_int.png')
plt.show()

Здесь вы можете увидеть интерполированную colorplot

Как видно, например, интерполируются точки (0,6) и (6,0), что добавляет две поверхности треугольника к T. Но я не хочу заполнять эти треугольники, потому что онивне границы.Есть ли способ сказать .tricontourf не заполнять определенные области?Также я открыт для решений, не связанных с .tricontourf.

Заранее спасибо

...