当您在Matlab中绘制事物时,最近绘制的数据系列放在已经存在的任何内容之上。例如:
figure; hold on
plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1])
plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0])
这里,红线显示在蓝线的顶部(它们相交的地方)。有没有办法设置一条线的绘制“有多深”,这样你就可以在下面绘制已经存在的东西了?
答案 0 :(得分:20)
使用 uistack 命令。例如:
h1 = plot(1:10, 'b');
hold on;
h2 = plot(1:10, 'r');
将绘制两条线,红线顶部绘制红线。如果你这样做:
uistack(h1);
蓝线将被带到前面。
答案 1 :(得分:4)
您也可以通过设置当前轴的子矢量的顺序来完成此操作。如果您执行以下操作:
figure; hold on
h1 = plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1]);
h2 = plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0]);
h = get(gca, 'Children');
你会看到h是一个包含h1和h2的向量。图形堆叠顺序由h中句柄的顺序表示。在此示例中,要反转堆叠顺序,您可以执行以下操作:
h = flipud(h);
set(gca, 'Children', h);