Пояснение к коду

Пояснение к коду

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

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

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];вы меняете положение осей на рисунке, указанном handle 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.

Связанный контент