Заголовок над группой участков - PullRequest
0 голосов
/ 23 января 2019

Я хочу фигуру с шестью участками внутри;Я разделил это с подзаговорами.Например,

for i = 1:12
    subplot(3,4,i)
    plot(peaks)
    title(['Title plot ',num2str(i)])
end

Я хотел бы добавить два глобальных заголовка, скажем, глобальный заголовок для шести графиков с левой стороны и еще один заголовок для шести других графиков с правой стороны.

enter image description here

У меня нет версии 2018b, поэтому я не могу использовать sgtitle('Subplot Title');.Можно ли как-нибудь использовать suptitle('my title');?Я могу использовать text(), но при изменении размера окна две метки переместятся.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Для этого вы можете использовать annotation с расположением участков 1 и 3:

for k = 1:12
    sp(k) = subplot(3,4,k);
    plot(peaks)
    title(['Title plot ',num2str(k)])
end
spPos = cat(1,sp([1 3]).Position);
titleSettings = {'HorizontalAlignment','center','EdgeColor','none','FontSize',18};
annotation('textbox','Position',[spPos(1,1:2) 0.3 0.3],'String','Left title',titleSettings{:})
annotation('textbox','Position',[spPos(2,1:2) 0.3 0.3],'String','Right title',titleSettings{:})

enter image description here

0 голосов
/ 23 января 2019

Я не проверял это, но вы можете получить дескриптор объекта подзаговора и затем выполнить метод title для этого дескриптора.Я бы также предложил применить заголовок после цикла.

CODE

for k = 1:12
    h(k) = subplot(3, 4, i)
    plot(peak)
end

title(h(1), 'Left side')
title(h(8), 'Right side')   % find out the right index yourself

Примечание:

Не используйте i или j в качестве переменной итерации, поскольку они уже определены в пространстве имен MATLAB как мнимая единица.

...