Как убрать пустое пространство слева от 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
методы.