Вы можете настроить расположение осей в окне рисунка следующим образом (используя ваш пример кода):
clear all; clc; close all;
x = rand(8,1);
y = rand(8,1);
figure;
ax = handle(gca);
ax.Position = [0.1, 0.15, 0.8, 0.75];
plot(x,y)
xlabel('time (s)')
ylabel('$x$ (m), $\theta$ (rad), $\dot{x}$ (m/s),$\dot{\theta}$ (rad/s), $\dot{S}_{gen}$(W/K)','Interpreter', 'latex','fontsize',10)
grid
Объяснение кода
В ax = handle(gca);
Вы сохраняете дескриптор осей в переменном ax
, так что вы можете изменить его позже.
В ax.Position [0.1, 0.15, 0.8, 0.75];
Вы меняете положение осей на рисунке, обозначенном ручкой ax
. Приведенный выше пример устанавливает нижнюю левую точку с координатами 0.1, 0.15
и шириной и высотой 0.8
и 0.75
соответственно. Эти координаты нормализованы относительно размера фигуры.
Примеры участков
Исходная ситуация
Если вы установите ax.Position
на [0.25, 0.15, 0.7, 0.75]
вы получите что-то, что вы имели изначально:
Решение
Если вы установите ax.Position
на [0.1, 0.1, 0.85, 0.85]
вы получаете гораздо меньше пробелов:
Заметки
Эта справочная ссылка MATLAB объясняет, как вы можете определить положение осей "автоматически", чтобы обеспечить более плотную посадку.
Эта справочная ссылка MATLAB по осям объясняет, какие параметры доступны в объекте осей.
Этот ответ в Stackoverflow помог мне найти способ использования точечной нотации в версиях MATLAB до 2014b. Очевидно, что использование handle()
также быстрее, чем методы set
и get
.