Axes объект имеет несколько свойств, управляющих размером осей и компоновкой заголовков и меток осей внутри фигуры.
OuterPosition - внешняя граница осей, включая заголовок, метки и поле. Укажите это свойство как вектор формы [left bottom width height]. left и bottom значения указывают расстояние от левого нижнего угла фигуры до левого нижнего угла внешней границы. width и height значения указывают размеры внешней границы.
Position - граница внутренних осей, на которых отображаются графики, исключая заголовок, метки и поле. Укажите это свойство как вектор формы [left bottom width height].
TightInset - Поля, добавленные к ширине и высоте Position значения свойств, указанные как вектор формы [left bottom right top]. Это свойство доступно только для чтения. При добавлении меток осей и заголовка MATLAB ® обновляет значения для размещения текста. Размер границы, определяемый Position и TightInset свойства включают весь текст графика.
PositionConstraint - Свойство position сохраняется при 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