Команда axis
работает путем установки различных свойств объекта осей. Можно установить эти свойства непосредственно достигать точно эффекта, который вы хотите.
Свойство | Описание |
---|---|
DataAspectRatio | Устанавливает относительное масштабирование отдельных значений данных оси. Установите Установите с |
DataAspectRatioMode | В |
Графическое изображение соотношения сторон поля | Устанавливает пропорции поля графика осей (установите Установите с |
PlotBoxAspectRatioMode | В |
Position | Задает местоположение и размер осей с четырехэлементным вектором: [оставленное смещение, нижнее смещение, ширина, высота]. |
'XLim', 'YLim', 'ZLim' | Устанавливает минимальные и максимальные пределы соответствующих осей. |
XLimMode, YLimMode, ZLimMode | В |
Когда свойства режима установлены в auto
, MATLAB автоматически определяет значения для всех этих свойств и затем расширяет оси, чтобы соответствовать форме фигуры. Можно заменить автоматическую операцию любого свойства путем определения значения для свойства или устанавливания его свойства режима вручную.
Значение, которое вы выбираете для конкретного свойства, зависит, в основном, от того, какие данные вы хотите отобразить. Большая часть данных, визуализируемых с MATLAB, также
Числовые данные, отображенные как строка, сетчатые графики или другой специализированный график
Представления реальных объектов (e. g., моторное транспортное средство или раздел топографии земли)
В первом случае обычно желательно выбрать пределы по осям, которые обеспечивают хорошее разрешение в каждом направлении оси и заполнять свободное место. Реальные объекты, с другой стороны, должны быть представлены точно в пропорции, независимо от угла представления.
Значения свойств значения по умолчанию 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 приспособил размер осей, если вы изменяете представление.
Важно понять, как свойства взаимодействуют друг с другом в порядке получить результаты, которые вы хотите. DataAspectRatio
, PlotBoxAspectRatio
, и x-, y-, и пределы оси z (XLim
, YLim
и свойства ZLim
) все ограничения места на форму осей.
Свойство 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-направления и оси не расширяются, чтобы заполнить прямоугольник положения, показывая истинную форму объекта.