The Axes
объект имеет несколько свойств, которые управляют размером осей и размещением заголовков и подписей по осям внутри рисунка.
OuterPosition
- внешний контур осей, включая заголовок, метки и поле. Задайте это свойство как вектор формы [left bottom width height]
. The left
и bottom
значения указывают расстояние от нижнего левого угла рисунка до нижнего левого угла внешнего контура. The width
и height
значения указывают на внешние граничные размерности.
Position
- контур внутренних осей, где появляются графики, за исключением заголовка, меток и поля. Задайте это свойство как вектор формы [left bottom width height]
.
TightInset
- Поля, добавленные к ширине и высоте Position
значения свойств, заданные как вектор вида [left bottom right top]
. Это свойство доступно только для чтения. Когда вы добавляете подписи по осям и заголовок, MATLAB® обновляет значения для размещения текста. Размер контура, заданный как Position
и TightInset
свойства включают весь текст графика.
PositionConstraint
- Позиционное свойство сохраняется при Axes
объект изменяет размер, заданный как 'outerposition'
или 'innerposition'
.
Units
- Позиционные модули. Для модулей измерения необходимо установить значение 'normalized'
(по умолчанию), чтобы включить автоматическое изменение размера осей. Когда модулями измерения положения являются модули длины, такие как дюймы или сантиметры, то Axes
объект имеет фиксированный размер.
Этот рисунок показывает 2-D вид областей осей, заданных OuterPosition
значения (красный), Position
значения (синий) и Position
развернутый TightInset
значения (пурпурный).
Этот рисунок показывает 3-D вид областей осей, заданных OuterPosition
значения (красный), Position
значения (синий) и Position
развернутый TightInset
значения (пурпурный).
Некоторые сценарии могут вызвать Axes
объект для автоматического изменения размера. Например, интерактивное изменение размера рисунка или добавление заголовка или подписей по осям активирует автоматическое изменение размера. Иногда новый размер осей не может удовлетворить обеим Position
и OuterPosition
значения, поэтому PositionConstraint
свойство указывает, какие значения нужно сохранить. Задайте PositionConstraint
свойство как одно из следующих значений:
'outerposition'
- Сохраните OuterPosition
значение. Используйте эту опцию, когда вы не хотите, чтобы оси или любой из окружающих текстов простирался за пределы определенного внешнего контура. MATLAB настраивает размер внутренней области осей (где появляются графики), чтобы попытаться уместить содержимое внутри внешнего контура.
'innerposition'
- Сохраните InnerPosition
значение. Используйте эту опцию, когда необходимо, чтобы внутренняя область осей оставалась определенным размером внутри рисунка. Эта опция иногда заставляет текст запускать рисунок.
Обычно выход из PositionConstraint
значение свойства установлено в 'outerposition'
является предпочтительным. Однако слишком длинный заголовок осей или метки могут сжимать внутреннюю область осей до размера, который трудно считать. В таком случае поддержание внутренних осей на определенный размер может быть предпочтительным, даже если окружающий текст проходит от рисунка.
Например, создайте рисунок с двумя осями и задайте одинаковые ширину и высоту для каждого положения оси. Установите PositionConstraint
свойство к 'outerposition'
для верхних осей и для 'innerposition'
для нижних осей. Заметьте, что в верхних осях внутренняя область сжимается для размещения текста, но текст не выходит за пределы рисунка. В нижних осях сохраняется размер внутренней области, но часть текста отрезана.
Примечание
Следующий код использует PositionConstraint
свойство, которое является новым, начиная с R2020a. Если вы используете более ранний релиз, установите ActivePositionProperty
к любому из 'outerposition'
или 'position'
.
figure; ax1 = axes('Position',[0.13 0.58 0.77 0.34]); ax1.PositionConstraint = 'outerposition'; % R2019b and earlier: ax1.ActivePositionProperty = 'outerposition'; plot(ax1,1:10) title(ax1,'Preserve OuterPosition') yticklabels(ax1,{'My incredibly descriptive, excessively wordy, and overly long label',... 'label 2','label 3'}) ax2 = axes('Position',[0.13 0.11 0.77 0.34]); ax2.PositionConstraint = 'innerposition'; % R2019b and earlier: ax2.ActivePositionProperty = 'position'; plot(ax2,1:10) title(ax2,'Preserve Position') yticklabels(ax2,{'My incredibly descriptive, excessively wordy, and overly long label',... 'label 2','label 3'})
По умолчанию MATLAB растягивает оси, чтобы заполнить доступное пространство. Это поведение «растяжение к заливке» может вызвать некоторое искажение. Оси могут точно не совпадать с соотношением сторон данных, соотношением сторон в поле графика и значениями угла поля зрения камеры, хранящимися в DataAspectRatio
, PlotBoxAspectRatio
, и CameraViewAngle
свойства. Поведение «растягивание к заливке» активируется, когда DataAspectRatioMode
, PlotBoxAspectRatioMode
, и CameraViewAngleMode
свойства Axes
для объекта задано значение 'auto'
.
Если вы задаете соотношение сторон данных, соотношение сторон графика или угол поля зрения камеры, то поведение «растяжение к заливке» отключается. Когда поведение «растягивание к заливке» отключено, MATLAB делает оси максимально большими в пределах доступного пространства и строго придерживается значений свойств, так что искажений нет.
Например, этот рисунок показывает тот же график с включенным режимом «растяжение до заливки» и без него. Пунктирная линия показывает доступное пространство, определяемое Position
свойство. В обеих версиях соотношение сторон данных, соотношение сторон графика и значения угла поля зрения камеры одинаковы. Однако на левом графике растяжение вносит некоторое искажение.
Растяжение до заливки включено (некоторое искажение) | Растяжение до заливки отключено (без искажений) |
---|---|
|
|
axes
| daspect
| pbaspect
| tiledlayout
| title