Как убрать пустое пространство слева от ylabel на рисунке Matlab при использовании длинной строки для ylabel?

Я делаю несколько графиков в Matlab 2014b, на одном из них я рисую 5 переменных в зависимости от времени и хочу указать 5 названий, таких как скорость (рад / с), напряжение (В) и т. Д. На Однако, как вы можете видеть на картинке, у меня появляется дополнительное пустое пространство слева, и я изо всех сил стараюсь его убрать.

Вот рабочий код, просто чтобы объяснить ситуацию:

clear all; clc; close all;
x = rand(8,1);
y = rand(8,1);

figure
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

Любые предложения высоко ценятся заранее.

1 ответ

Решение

Вы можете настроить позиционирование осей в окне рисунка следующим образом (используя ваш пример кода):

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 методы.

Другие вопросы по тегам