在一个.fig文件中给定了三条曲线的图形,我想添加另一条曲线(使用hold all
和plot
),但是将其放在已有的曲线之后(即确保最后一条原始曲线仍然处于前景)。是否可以实现这一点而无需提取绘图数据和重新绘制?
如果你知道你想要置于顶部的行的句柄(例如因为你调用了 h = plot(...)
),你可以使用 uistack
。
uistack(h,'top')
或者,您可以直接操作当前轴的子项顺序。以下代码将最后一条曲线置于顶部。
chH = get(gca,'Children')
set(gca,'Children',[chH(end);chH(1:end-1)])
@Jonas提供的使用'Children'
属性的分辨率在给定格式中无法工作。应该按照以下方式进行修改:
chH = get(gca,'Children')
set(gca,'Children',flipud(chH))
get(gca,...)
和set(gca,...)
会导致错误:"使用set出错。子项只能设置为它本身的排列"。set
之后,您需要通过调用legend(...)
来刷新图例。我有5个需要重新排序的绘图。如果对顺序不确定,请每次排列两个绘图,刷新图例并查看是否是您想要的顺序。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上测试通过
axesHandle.Children = circshift(axesHandle.Children, 1);
- j-hap