给定 .fig 文件中的三条曲线图,我想添加另一个图(使用hold all
and plot
),但将其放在现有曲线之一的后面(即确保最后一条原始曲线保持前景曲线)。这可以在无需提取绘图数据和重新绘图的情况下实现吗?
问问题
59639 次
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 回答