Это непросто сделать, не подключив слушателя к событию изменения размера фигуры (см. пример ), и не выполнив некоторые вычисления, связанные с соотношениями сторон.
Это не совсемПонятно, какие объекты являются вашими метками (text
или annotation
), поэтому я просто покажу, как сделать это программно с помощью команды text
, которая создает метки на осях координаты (в отличие от цифра координаты).Это не решает проблему полностью, но выглядит лучше, возможно, в приемлемой степени:
function q56624258
x = linspace(0,2*pi);
y = sin(x);
hF = figure('Position',[-1500 174 760 729]);
%% Create plots
[hAx,hYL] = deal(gobjects(4,1));
for ind1 = 1:3
hAx(ind1) = subplot(2,2,ind1, 'Parent' , hF);
plot(hAx(ind1), x,y.^ind1);
hYL(ind1) = ylabel("plot" + ind1);
end
hAx(4) = subplot(2,2,4);
plot(hAx(4), x,abs(y));
hYL(4) = ylabel('plot4');
%% Add texts (in data coordinates; x-position is copied from the y-label)
for ind1 = 1:4
text(hAx(ind1), hYL(ind1).Position(1), 1.1, ['(' char('a'+ind1-1) ')'], ...
'HorizontalAlignment', 'center');
end
Обратите внимание на несколько изменений в вашем коде:
- Дескрипторы, возвращаемые некоторыми функциями, которые создают графические элементы, теперь сохраняются (в основном:
hAx
, hYL
). - Все функции, которые создают графические элементы (
subplot
, plot
, ylabel
), теперь имеют указанную цель (т.е. родительский элемент или контейнер). - Я изменил
'Position'
изрисунок, чтобы он работал в моей настройке (вы можете изменить его обратно).