Плоскость разбиения (которая не должна быть плоской) является поверхностью, которая принимает окрашивание на основе значений объемных данных в области, где расположен срез. Плоскости разбиения полезны для зондирования наборов объемных данных, чтобы обнаружить, где существуют интересные области, которые можно затем визуализировать с другими типами графиков (см. slice
пример). Плоскости разбиения также полезны для добавления визуального контекста к границе объема, когда также используются другие методы построения графика (см. coneplot
и отобразить потоки с использованием векторных данных для примеров).
Используйте slice
функция для создания плоскостей разбиения. Этот пример срезает объем, сгенерированный flow
.
Сгенерируйте объемные данные командой:
[x,y,z,v] = flow;
Определите область значений объема путем нахождения минимума и максимума данных о координатах.
xmin = min(x(:)); ymin = min(y(:)); zmin = min(z(:)); xmax = max(x(:)); ymax = max(y(:)); zmax = max(z(:));
Чтобы создать плоскость разбиения, которая не лежит в плоскости осей, сначала задайте поверхность и поверните ее к нужной ориентации. Этот пример использует поверхность, которая имеет те же координаты 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)
Нарисуйте повернутую плоскость разбиения, задав 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';
Чтобы отобразить объем в правильных пропорциях, установите соотношение сторон данных равным [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
Добавление света к сцене делает контуры между четырьмя плоскостями разбиения более очевидными, потому что каждая плоскость образует другой угол с источником света (lightangle
). Выбор палитры только с 24 цветами (значение по умолчанию 64) создает видимые градации, которые помогают указать изменение объема.
lightangle(-45,45) colormap(turbo(24))
Изменение отображения цвета показывает, как изменить соответствие данных цвету.
Текущая палитра определяет раскраску плоскостей разбиения. Это позволяет вам изменить раскраску плоскости разбиения путем:
Изменение палитры
Изменение отображения значения данных на цвет
Предположим, например, что вы заинтересованы в значениях данных только между -5 и 2,5 и хотите использовать палитру, которая отображала более низкие значения на красные и более высокие значения на синие (то есть противоположные значению по умолчанию turbo
палитра).
Разверните палитру используя colormap
и flipud
:
colormap(flipud(turbo(24)))
Скорректируйте пределы цвета, чтобы подчеркнуть любую конкретную область значений данных, представляющий интерес. Отрегулируйте пределы цвета в диапазоне от -5 до 2.4832, чтобы отобразить любое значение ниже значения -5 (исходные данные варьировались от -11.5417 до 2.4832) в тот же цвет. Для получения информации о отображении цвета смотрите caxis
функция.
caxis([-5,2.4832])
Добавьте цветовую панель, чтобы предоставить ключ для отображения данных в цвет.
colorbar('southoutside')