Исследование объемов с плоскостями разбиения

Данные потока жидкости для нарезки

Плоскость разбиения (которая не должна быть плоской) является поверхностью, которая принимает окрашивание на основе значений объемных данных в области, где расположен срез. Плоскости разбиения полезны для зондирования наборов объемных данных, чтобы обнаружить, где существуют интересные области, которые можно затем визуализировать с другими типами графиков (см. slice пример). Плоскости разбиения также полезны для добавления визуального контекста к границе объема, когда также используются другие методы построения графика (см. coneplot и отобразить потоки с использованием векторных данных для примеров).

Используйте slice функция для создания плоскостей разбиения. Этот пример срезает объем, сгенерированный flow.

1. Исследуйте данные

Сгенерируйте объемные данные командой:

[x,y,z,v] = flow;

Определите область значений объема путем нахождения минимума и максимума данных о координатах.

xmin = min(x(:)); 
ymin = min(y(:)); 
zmin = min(z(:));

xmax = max(x(:)); 
ymax = max(y(:)); 
zmax = max(z(:));

2. Плоскость разбиения под углом к осям X

Чтобы создать плоскость разбиения, которая не лежит в плоскости осей, сначала задайте поверхность и поверните ее к нужной ориентации. Этот пример использует поверхность, которая имеет те же координаты X и Y, что и объем.

hslice = surf(linspace(xmin,xmax,100),...
   linspace(ymin,ymax,100),...
   zeros(100));

Поверните поверхность на -45 степени вокруг оси X и сохраните поверхность XData, YData, и ZData для определения плоскости разбиения; затем удалите поверхность.

rotate(hslice,[-1,0,0],-45)
xd = get(hslice,'XData');
yd = get(hslice,'YData');
zd = get(hslice,'ZData');

delete(hslice)

3. Нарисуйте плоскости разбиения

Нарисуйте повернутую плоскость разбиения, задав FaceColor на interp так, чтобы он был окрашен палитрой рисунка, и установите EdgeColor на none. Увеличьте DiffuseStrength на .8 чтобы сделать эту плоскость блестеть более ярко после добавления источника света.

colormap(turbo)
h = slice(x,y,z,v,xd,yd,zd);
h.FaceColor = 'interp';
h.EdgeColor = 'none';
h.DiffuseStrength = 0.8;

Набор hold на on и добавить еще три ортогональные плоскости разбиения в xmax, ymax, и zmin чтобы предоставить контекст для первой плоскости, которая срезается по объему под углом.

hold on
hx = slice(x,y,z,v,xmax,[],[]);
hx.FaceColor = 'interp';
hx.EdgeColor = 'none';

hy = slice(x,y,z,v,[],ymax,[]);
hy.FaceColor = 'interp';
hy.EdgeColor = 'none';

hz = slice(x,y,z,v,[],[],zmin);
hz.FaceColor = 'interp';
hz.EdgeColor = 'none';

4. Определите вид

Чтобы отобразить объем в правильных пропорциях, установите соотношение сторон данных равным [1,1,1] (daspect). Отрегулируйте ось так, чтобы она плотно помещалась вокруг объема (axis). Ориентация осей может быть выбрана первоначально с помощью rotate3d для определения лучших view.

Масштабирование на сцене обеспечивает больший вид громкости (camzoom). Выбор типа проекции perspective дает прямоугольному твердому телу более естественные пропорции, чем ортогональная проекция по умолчанию (camproj).

daspect([1,1,1])
axis tight
view(-38.5,16)
camzoom(1.4)
camproj perspective

5. Добавить подсветку и задать цвета

Добавление света к сцене делает контуры между четырьмя плоскостями разбиения более очевидными, потому что каждая плоскость образует другой угол с источником света (lightangle). Выбор палитры только с 24 цветами (значение по умолчанию 64) создает видимые градации, которые помогают указать изменение объема.

lightangle(-45,45)
colormap(turbo(24))

Изменение отображения цвета показывает, как изменить соответствие данных цвету.

Изменение отображения цветов

Текущая палитра определяет раскраску плоскостей разбиения. Это позволяет вам изменить раскраску плоскости разбиения путем:

  • Изменение палитры

  • Изменение отображения значения данных на цвет

Предположим, например, что вы заинтересованы в значениях данных только между -5 и 2,5 и хотите использовать палитру, которая отображала более низкие значения на красные и более высокие значения на синие (то есть противоположные значению по умолчанию turbo палитра).

1. Настройка Палитры

Разверните палитру используя colormap и flipud:

colormap(flipud(turbo(24)))

2. Корректировка пределов цвета

Скорректируйте пределы цвета, чтобы подчеркнуть любую конкретную область значений данных, представляющий интерес. Отрегулируйте пределы цвета в диапазоне от -5 до 2.4832, чтобы отобразить любое значение ниже значения -5 (исходные данные варьировались от -11.5417 до 2.4832) в тот же цвет. Для получения информации о отображении цвета смотрите caxis функция.

caxis([-5,2.4832])

3. Добавление цветовой панели

Добавьте цветовую панель, чтобы предоставить ключ для отображения данных в цвет.

colorbar('southoutside')