【问题标题】:Subplot changes size when I move legend: matlab当我移动图例时,子图会改变大小:matlab
【发布时间】:2014-10-07 03:17:44
【问题描述】:

我使用 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) 不断改变大小。

任何帮助将不胜感激。

【问题讨论】:

  • 你的意思是把前面11组数据的图例都放到最后一个子图中吗?
  • 是的。所有子图只使用两个系列,代表不同地理区域的相同指标:因此,一个图例(放置在所有子图创建后)显示这两个系列的符号/线条就足够了。

标签: matlab legend handle subplot


【解决方案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');

您不断调整子图 #11 的大小的原因是因为以这种方式将图例创建为 #11 的 子图。当您尝试将其移出绘图的当前显示时,Matlab 只需调整其大小以覆盖所有存在任何内容的区域。

【讨论】:

  • 你的解释很有道理,谢谢。但是,我希望子图在 4、3、12 位置根本不存在。我只希望传说在那里。如果我删除 subplot(4,3,12),那么图例也会被删除。
猜你喜欢
  • 1970-01-01
  • 2014-04-03
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
相关资源
最近更新 更多