Как отобразить контуры двумерных данных на выбранной трехмерной плоскости (x, y, z)? - PullRequest
0 голосов
/ 17 января 2019

Я строю контуры 2D matrix в Matlab. По умолчанию контуры лежат на плоскости (x, y). Также по умолчанию плоскость (x, y) расположена на вертикальном уровне z = 0 в 3D space.

Я ищу решение для отображения 2D среза на плоскости (y, z) со значением x по моему выбору. То есть я пытаюсь отобразить 2D-горизонтальный срез в виде «вертикальной завесы», положение которой на оси х я выбираю.

Я попытался создать 2D grid и добавить к нему третью сетку на выбранном уровне x:

[y,z] = meshgrid(coord1,coord2); % the 2D grid
xlevel = 2;
x = xlevel.*ones(size(y)); % the third grid

Мне удалось успешно использовать эту сетку для отображения данных, используя:

surf(x,y,z,data)

Это дает нужный мне результат, но это surf график, а не contourf график. Функция contourf выдает следующее сообщение об ошибке при наличии тех же аргументов:

contourf(x,y,z,data)

Ошибка использования контура (строка 61)

Значения уровня контура должны быть векторными или скалярными.

потому что третий аргумент (z) обрабатывается как данные для отображения, а четвертый аргумент (data) обрабатывается как значение отображаемых контуров / изолиний (именно здесь создается сообщение об ошибке).

По непонятной мне причине следующее не выдает сообщение об ошибке (но тоже ничего не отображается):

contourf(x,y,z,data,30)

Есть идеи использовать contourf для достижения того же результата, что я получаю с surf?

...