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