31

给定 .fig 文件中的三条曲线图,我想添加另一个图(使用hold alland plot),但将其放在现有曲线之一的后面(即确保最后一条原始曲线保持前景曲线)。这可以在无需提取绘图数据和重新绘图的情况下实现吗?

4

4 回答 4

53

如果你知道你想要在顶部的线的句柄(例如,因为你打电话h = plot(...),你可以使用uistack

uistack(h,'top')

或者,您可以直接操作当前轴的子级顺序。下面将最后一条曲线放在顶部。

chH = get(gca,'Children')
set(gca,'Children',[chH(end);chH(1:end-1)])
于 2011-10-06T13:49:08.093 回答
3

@Jonas 使用'Children'属性给出的分辨率在其给定格式下不起作用。应修改如下:

chH = get(gca,'Children')
set(gca,'Children',flipud(chH))
于 2015-05-06T22:41:55.660 回答
2

当图像有图例时,get(gca,...)andset(gca,...)对会导致错误:“使用set时出错。子项只能设置为自身的排列” 在这种情况下,我使用图形的 GUI 选择工具来选择轴对象,然后只根据需要获取和设置工作图,而不是图例。调用 set 后,您必须通过调用 来刷新图例legend(...)。我有 5 个地块需要重新排序。当不确定顺序时,一次排列两个图,刷新图例,看看这是否是您想要的顺序

于 2014-05-01T08:23:20.397 回答
1

Children属性保存引用,并且顺序指示图形堆栈。

如何检索列表的另一个选项是

gcaChildrenList=gca.Children;

这样你就可以玩像这样的订单

gca.Children=gca.Children([2:end 1]);         % Put the topmost graphic in the bottom
gca.Children=gca.Children([end:-1:1]);        % Flip the stack
gca.Children=gca.Children([1:N-1 N+1:end N]); % Put Nth graphics ontop the stack

在 Matlab R2014b 上测试

于 2019-01-04T11:50:12.290 回答