Контурная диаграмма неравномерно распределенных данных - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть массив данных x, y, z, координаты которых расположены нерегулярно. Кроме того, координаты также не заполняют обычное прямоугольное пространство. Ниже показан график координат моих данных.

координаты моих данных

Что я хочу сделать, так это построить контурную карту этого набора данных. Я попытался scipy.interpolate.griddata , чтобы преобразовать мои данные в сетку и построить контурную карту, используя plt.contourf .

x_min, y_min = 0, 0
x_max, y_max = x_val.max(), y_val.max()
xi = np.linspace(x_min, x_max+0.001, 500)
yi = np.linspace(y_min, y_max+0.001, 500)
zi = griddata((x_val, y_val, z_val, (xi[None,:], yi[:,None]), method='cubic')

plt.figure()
CS = plt.contourf(xi,yi,zi,200,cmap=plt.cm.jet)
plt.show()

Прилагается нижеконтурная карта, которую я получил. Очевидно, что выпуклая оболочка не соответствовала границам моих данных правильно и вызвала неправильную интерполяцию данных в некоторых пустых областях. Могу ли я узнать, как я могу решить эту проблему?

контурная карта, которую я получил

----------- обновление 11/07 ------------

Привет, я сделал обходной путь для этой проблемы, но это своего рода использование жестокой силы. Не уверен, что у кого-то есть идея получше. Мой подход вручную установить значение нежелательной области np.nan в griddaa zi. Пожалуйста, обратитесь к рисунку за тем, что я сделал.

установите значения массива zi в области черного ящика на np.nan

правильный результат

...