Управление соотношением сторон осей

Axes Aspect Ratio Properties

Команда axis работает путем установки различных свойств объекта осей. Можно установить эти свойства непосредственно достигать точно эффекта, который вы хотите.

Свойство

Описание

DataAspectRatio

Устанавливает относительное масштабирование отдельных значений данных оси. Установите DataAspectRatio на [1 1 1] отображать реальные объекты в правильных пропорциях. Определение значения для DataAspectRatio заменяет "растянуть для заполнения" поведение.

Установите с daspect

DataAspectRatioMode

В auto MATLAB выбирает шкалы оси, которые обеспечивают самое высокое разрешение на доступном пробеле.

PlotBoxAspectRatio

Устанавливает пропорции поля графика осей (установите box на on видеть поле). Определение значения для PlotBoxAspectRatio заменяет "растянуть для заполнения" поведение.

Установите с pbaspect

PlotBoxAspectRatioMode

В auto MATLAB устанавливает PlotBoxAspectRatio на [1 1 1], если вы явным образом не устанавливаете DataAspectRatio и/или пределы по осям.

Position

Задает местоположение и размер осей с четырехэлементным вектором: [оставленное смещение, нижнее смещение, ширина, высота].

XLim, YLim, ZLim

Устанавливает минимальные и максимальные пределы соответствующих осей.

XLimMode , YLimMode , ZLimMode

В auto MATLAB выбирает пределы по осям.

Когда свойства режима установлены в auto, MATLAB автоматически определяет значения для всех этих свойств и затем расширяет оси, чтобы соответствовать форме фигуры. Можно заменить автоматическую операцию любого свойства путем определения значения для свойства или устанавливания его свойства режима вручную.

Значение, которое вы выбираете для конкретного свойства, зависит, в основном, от того, какие данные вы хотите отобразить. Большая часть данных, визуализируемых с MATLAB, также

  • Числовые данные, отображенные как строка, сетчатые графики или другой специализированный график

  • Представления реальных объектов (например, моторное транспортное средство или раздел топографии земли)

В первом случае обычно желательно выбрать пределы по осям, которые обеспечивают хорошее разрешение в каждом направлении оси и заполнять свободное место. Реальные объекты, с другой стороны, должны быть представлены точно в пропорции, независимо от угла представления.

Значения свойств значения по умолчанию MATLAB разработаны к

  • Выберите пределы по осям, чтобы породить линейную оболочку столбцов данных (когда XLimMode, YLimMode и ZLimMode будут установлены в auto).

  • Обеспечьте самое высокое разрешение в свободном месте путем установки шкалы каждой оси независимо (когда DataAspectRatioMode и PlotBoxAspectRatioMode будут установлены в auto).

  • Чертите оси, которые соответствуют прямоугольнику положения путем корректировки CameraViewAngle и затем "растянуть для заполнения" осей при необходимости.

Выбор соотношения сторон по умолчанию

Свойство Position осей задает местоположение и размерности осей в фигуре. Третьи и четвертые элементы вектора Position (width и height) задают прямоугольник, в котором MATLAB чертит оси. MATLAB соответствует осям к этому прямоугольнику.

Значение по умолчанию для свойства Units осей нормировано к родительским размерностям фигуры. Это означает, что форма окна рисунка определяет форму прямоугольника положения. Когда вы изменяете размер окна рисунка, MATLAB изменяет прямоугольник положения, чтобы соответствовать ему.

membrane
set(gca,'BoxStyle','full','Box','on')

Изменение размера и формы фигуры вызывает изменение в размере и форме осей. Оси могут выбрать новые местоположения метки метки деления на оси также.

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

Поддержание пропорций осей с фигурой изменяет размер

Чтобы поддержать конкретную форму, можно задать размер осей в абсолютных единицах, таких как дюймы, которые независимы от размера окна рисунка. Однако это не хороший подход, если вы пишете программу MATLAB, что вы хотите работать с окном рисунка любого размера. Лучший подход должен задать соотношение сторон осей и переопределения, автоматического "растянуть для заполнения".

В случаях, где вы хотите определенное соотношение сторон, можно заменить протяжение путем определения значения для этих свойств осей:

  • DataAspectRatio или DataAspectRatioMode

  • PlotBoxAspectRatio или PlotBoxAspectRatioMode

  • CameraViewAngle или CameraViewAngleMode

Первые два набора свойств влияют на соотношение сторон непосредственно. Установка любого из свойств режима к manual просто отключает "растянуть для заполнения" при поддержании всех текущих значений свойств. В этом случае MATLAB увеличивает оси, пока одна размерность прямоугольника положения не ограничивает его. Например, устанавливая DataAspectRatio на [1 1 1]:

sphere
daspect([1 1 1])
set(gca,'BoxStyle','full','Box','on')

Изменение размера и формы фигуры не изменяет соотношение сторон осей.

Установка свойства CameraViewAngle отключает "растянуть для заполнения", и также препятствует тому, чтобы MATLAB приспособил размер осей, если вы изменяете представление.

Aspect Ratio Properties

Важно понять, как свойства взаимодействуют друг с другом в порядке получить результаты, которые вы хотите. DataAspectRatio, PlotBoxAspectRatio, и x-, y-, и пределы оси z (XLim, YLim и свойства ZLim) все ограничения места на форму осей.

DataAspectRatio

Свойство DataAspectRatio управляет отношением шкал оси. Например, чтобы отобразить объемную поверхностную диаграмму математического выражения MATLAB выбирает соотношение сторон данных, которое подчеркивает значения функции:

[X,Y] = meshgrid([-2:.15:2],[-4:.3:4]);
Z = X.*exp(-X.^2 - Y.^2);
surf(X,Y,Z)
set(gca,'BoxStyle','full','Box','on')

Функция daspect возвращает фактическое значение свойства DataAspectRatio

daspect
ans =

     4     8     1

Это означает, что четыре модуля в длине вдоль оси X покрывают те же значения данных как восемь модулей в длине вдоль оси Y и один модуль в длине вдоль оси z. Оси заполняют поле графика, которое имеет соотношение сторон [1 1 1] по умолчанию.

Если вы хотите просмотреть объемную поверхностную диаграмму так, чтобы относительные значения вдоль каждой оси были равны друг относительно друга, можно установить DataAspectRatio на [1 1 1].

daspect([1 1 1])

Устанавливание значения свойства DataAspectRatio также устанавливает DataAspectRatioMode на manual и заменяет "растянуть для заполнения", таким образом, заданное соотношение сторон достигается.

Графическое изображение соотношения сторон поля

Рассмотрение значения PlotBoxAspectRatio для графика в предыдущем разделе показывает, что теперь взяло бывшее значение DataAspectRatio. Функция pbaspect к возвращает значение PlotBoxAspectRatio:

pbaspect
ans =

     4     8     1

Заметьте, что MATLAB повторно масштабировал поле графика, чтобы разместить график с помощью заданного DataAspectRatio.

Свойство PlotBoxAspectRatio управляет формой поля графика осей. По умолчанию MATLAB устанавливает это свойство на [1 1 1] и настраивает свойство DataAspectRatio так, чтобы графики заполнили поле графика или до достижения ограничения.

Когда вы устанавливаете значение DataAspectRatio, и таким образом препятствуете тому, чтобы он изменился, MATLAB отличается PlotBoxAspectRatio вместо этого.

Если вы задаете и DataAspectRatio и PlotBoxAspectRatio, MATLAB обеспечен, чтобы изменить пределы по осям, чтобы повиноваться этим двум ограничениям, которые вы уже задали.

Продолжая пример mesh, если вы устанавливаете оба свойства,

daspect([1 1 1])
pbaspect([1 1 1])

MATLAB изменяет пределы по осям, чтобы удовлетворить эти два ограничения, помещенные в оси.

Корректировка пределов по осям

MATLAB позволяет вам установить пределы по осям. Однако задавая значение для DataAspectRatio, PlotBoxAspectRatio и пределы по осям ограничивают определение осей. Например, для MATLAB не возможно чертить оси, если вы устанавливаете эти значения:

set(gca,'DataAspectRatio',[1 1 1],...
        'PlotBoxAspectRatio',[1 1 1],...
        'XLim',[-4 4],...
        'YLim',[-4 4],...
        'ZLim',[-1 1])

В этом случае MATLAB игнорирует установку PlotBoxAspectRatio и определяет его значение автоматически.

pbaspect
ans =

     4     4     1

MATLAB может теперь чертить оси с помощью заданного DataAspectRatio и пределов по осям.

Отображение действительных объектов

Если вы хотите отобразить объект так, чтобы это выглядело реалистичным, необходимо изменить значения по умолчанию MATLAB. Например, эти данные задают объект закрашенной фигуры, имеющий форму клина.

vert = [0 0 0;0 1 0;1 1 0;1 0 0;0 0 1;0 1 1;1 1 4;1 0 4];
fac = [1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8];
patch('Vertices',vert,'Faces',fac,...
   'FaceColor',[0.7 0.7 0.7],'EdgeColor','k')
view(3)

Однако это исключает, искажает фактическую форму твердого объекта, заданного по условию. Чтобы отобразить его в правильных пропорциях, установите DataAspectRatio.

set(gca,'DataAspectRatio',[1 1 1])

Модули теперь равны в x-, y-, и z-направления и оси не расширяются, чтобы заполнить прямоугольник положения, показывая истинную форму объекта.

Line Properties