当我移动图例时,子图改变大小:matlab

时间:2014-08-13 16:39:54

标签: matlab legend handle subplot

我使用

创建了11个子图的图
for stcount=1:11;
    subplot(4,3,stcounter);
.....stuff to plot

end

由于所绘制的系列对于所有绘图都是相同的,我在末尾添加了图例,认为它会插入到最终的子绘图位置(4,3,12):

legend('series 1','series 2');

当然没有,因为我现在意识到它只与最后一个子图(4,3,11)相关联。我尝试手动移动它,最后的子图在我这样做时自行调整大小。 有谁知道为什么? 我试过保存图例命令的句柄:

h=legend('series 1','series 2');

然后尝试重新定位图例:

newPosition = [0.5 0.5 0.5 0.5];%arbitrary position for example
newUnits = 'normalized';
set(h,'Position', newPosition,'Units', newUnits);

subplot(4,3,11)不断改变大小。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以创建2组虚拟数据(NaN)并在最后一个绘图中绘制它们,然后添加图例。

for stcount=1:11;
    subplot(4,3,stcount);
    plot(1:10, rand(1,10), 'r-', 1:10, rand(1,10), 'k--');
end
subplot(4,3,12)
plot(1:10, nan(1,10), 'r-', 1:10, nan(1,10), 'k--');
axis off
legend('series 1', 'series 2');

result

你继续调整子图#11的大小是因为这样,图例被创建为#11的。当您尝试将其移出当前的绘图显示时,Matlab只需调整其大小以覆盖所有存在的区域。