axis
команда работает путем установки различных свойств объекта осей. Можно задать эти свойства непосредственно, чтобы достичь именно того эффекта, который вы хотите.
Свойство | Описание |
---|---|
DataAspectRatio | Устанавливает относительное масштабирование значений данных отдельных осей. Задайте Установите с |
DataAspectRatioMode | В |
PlotBoxAspectRatio | Устанавливает пропорции графика осей (set Установите с |
PlotBoxAspectRatioMode | В |
Position | Определяет местоположение и размер осей с четырехэлементным вектором: [смещение влево, смещение внизу, ширина, высота]. |
XLim, YLim, ZLim | Устанавливает минимальные и максимальные пределы соответствующих осей. |
XLimMode , YLimMode , ZLimMode | В |
Когда для свойств mode задано значение auto
MATLAB автоматически определяет значения для всех этих свойств, а затем растягивает оси, чтобы соответствовать форме рисунка. Можно переопределить автоматическую операцию любого свойства, задав значение для свойства или задав для свойства его режима значение вручную.
Значение, выбранное для конкретного свойства, зависит, в основном, от типа данных, которые необходимо отобразить. Большая часть данных, визуализированных с помощью MATLAB, либо
Числовые данные отображаются как линии, сетчатые графики или другие специализированные графики
Представления объектов реального мира (например, моторное транспортное средство или раздел земной топографии)
В первом случае обычно желательно выбрать пределы по осям, которые обеспечивают хорошее разрешение в каждом направлении оси, и заполнить имеющееся пространство. Объекты реального мира, с другой стороны, должны быть представлены точно пропорционально, независимо от угла зрения.
Значения свойств MATLAB по умолчанию разработаны для
Выберите пределы по осям, чтобы охватить область значений данных (когда XLimMode
, YLimMode
, и ZLimMode
заданы как auto
).
Обеспечьте наивысшее разрешение в доступном пространстве путем установки шкалы каждой оси независимо (когда DataAspectRatioMode
и PlotBoxAspectRatioMode
заданы как auto
).
Нарисуйте оси, которые соответствуют прямоугольнику положения путем регулировки CameraViewAngle
а затем при необходимости растянуть для заливки осей.
Область осей Position
свойство задает местоположение и размерности осей внутри рисунка. Третий и четвертый элементы Position
вектор (ширина и высота) задает прямоугольник, в котором MATLAB рисует оси. MATLAB подбирает оси к этому прямоугольнику.
Значение по умолчанию для осей Units
свойство нормировано к родительским размерностям рисунка. Это означает, что форма окна рисунка определяет форму прямоугольника положения. Когда вы изменяете размер окна рисунка, MATLAB изменяет форму прямоугольника положения, чтобы соответствовать ему.
sphere set(gcf,'Color',[0.90 0.90 0.90]) set(gca,'BoxStyle','full','Box','on')
Изменение размера и формы рисунка приводит к изменению размера и формы осей. Можно также выбрать новые положения метки деления на оси.
f = gcf; f.Position(3) = f.Position(3) * 0.67;
Изменение формы осей для вписывания в окно рисунка может изменить соотношение сторон графика. MATLAB подбирает оси для заполнения прямоугольника положения и в процессе может искажать форму. Это обычно желательно для графиков числовых данных, но не для реалистичного отображения объектов.
Чтобы сохранить конкретную форму, можно задать размер осей в абсолютных модулях, таких как дюймы, которые не зависят от размера окна рисунка. Однако это не является хорошим подходом, если вы пишете программу MATLAB, которую хотите работать с окном рисунка любого размера. Лучший подход состоит в том, чтобы задать соотношение сторон осей и переопределить автоматическое растяжение к заливке.
В тех случаях, когда требуется определенное соотношение сторон, можно переопределить растяжение, задав значение для этих свойств осей:
DataAspectRatio
или DataAspectRatioMode
PlotBoxAspectRatio
или PlotBoxAspectRatioMode
CameraViewAngle
или CameraViewAngleMode
Первые два набора свойств влияют на соотношение сторон непосредственно. Установка значения любого из свойств режима вручную просто отключает растяжение до заливки с сохранением всех значений текущих свойств. В этом случае MATLAB увеличивает оси, пока одна размерность прямоугольника положения не ограничивает его. Для примера установите DataAspectRatio
на [1 1 1]
. Также установите цвет рисунка, чтобы увидеть связь между рисунком и осями.
sphere daspect([1 1 1]) set(gca,'BoxStyle','full','Box','on') set(gcf,'Color',[0.90 0.90 0.90])
Изменение размера и формы рисунка не изменяет соотношение сторон осей.
f = gcf; f.Position(3) = f.Position(3) * 0.67;
Установка CameraViewAngle
свойство отключает растяжение к заливке, а также препятствует корректировке MATLAB размера осей при изменении вида.
Важно понять, как свойства взаимодействуют друг с другом, порядок получить желаемые результаты. The DataAspectRatio
, PlotBoxAspectRatio
, и пределы x -, y - и z-осей (XLim
, YLim
, и ZLim
свойства) все наложить ограничения на форму осей.
Соотношение сторон данных
The 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')
The daspect
функция возвращает фактическое значение DataAspectRatio
свойство.
daspect
ans = 1×3
4 8 1
Это означает, что четыре модулей длины вдоль оси X покрывают те же значения данных, что и восемь модулей длины вдоль оси Y и один модуль длины вдоль оси Z. Оси заполняют график, который имеет соотношение сторон [1 1 1]
по умолчанию.
Если необходимо просмотреть объемную поверхностную диаграмму так, чтобы относительные величины вдоль каждой оси были равны друг другу, можно задать DataAspectRatio
на [1 1 1]
.
daspect([1 1 1])
Установка значения DataAspectRatio
свойство также устанавливает DataAspectRatioMode
на manual
и переопределяет растяжение до заливки, так что достигается заданное соотношение сторон.
Соотношение сторон коробки графика
Смотрите на значение PlotBoxAspectRatio
для графика в предыдущем разделе показано, что теперь оно приняло прежнее значение DataAspectRatio
. The pbaspect
функция для возвратов значения PlotBoxAspectRatio
:
pbaspect
ans = 1×3
4 8 1
Заметьте, что MATLAB пересмотрел график графика, используя заданную DataAspectRatio
.
The PlotBoxAspectRatio
свойство управляет формой графика осей. По умолчанию MATLAB устанавливает это свойство на [1 1 1]
и настраивает DataAspectRatio
свойство так, чтобы графики заполняли график или до достижения ограничения.
Когда вы задаете значение DataAspectRatio
, и тем самым препятствует его изменению, MATLAB изменяет PlotBoxAspectRatio
вместо этого.
Если вы задаете оба DataAspectRatio
и PlotBoxAspectRatio
MATLAB вынужден изменить пределы по осям, чтобы соответствовать двум уже заданным ограничениям.
Продолжая пример сетки, если вы задаете оба свойства, MATLAB изменяет пределы по осям, чтобы удовлетворить двум ограничениям, наложенным на оси.
daspect([1 1 1]) pbaspect([1 1 1])
Корректирующие пределы по осям
Оси также имеют свойства для установки пределов по оси X -, Y - и Z. Однако установка пределов по осям с помощью PlotBoxAspectRatio
и DataAspectRatio
свойства чрезмерно напряжают оси. Например, эта команда задает пределы по осям, которые конфликтуют с PlotBoxAspectRatio
значение.
set(gca,'DataAspectRatio',[1 1 1],... 'PlotBoxAspectRatio',[1 1 1],... 'XLim',[-4 4],... 'YLim',[-4 4],... 'ZLim',[-1 1])
Если вы запросите прямоугольный график соотношения сторон, то можете увидеть, что PlotBoxAspectRatio
значение изменено с учетом пределов по осям.
pbaspect
ans = 1×3
4 4 1
Если вы хотите отобразить объект так, чтобы он выглядел реалистично, необходимо изменить параметры 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
. Установка этого свойства делает модули равными в направлениях x -, y - и z и препятствует растяжению осей, чтобы заполнить прямоугольник положения, раскрывая истинную форму объекта.
set(gca,'DataAspectRatio',[1 1 1])