如何更改Matlab图中的行顺序?

问题描述 投票:27回答:4

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

matlab sorting plot append figure
4个回答
44
投票

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

uistack(h,'top')

或者,您可以直接操纵当前轴的子顺序。以下将最后一条曲线置于顶部。

chH = get(gca,'Children')
set(gca,'Children',[chH(end);chH(1:end-1)])

2
投票

@Jonas使用'Children'属性给出的分辨率不能以给定的格式工作。它应该修改如下:

chH = get(gca,'Children')
set(gca,'Children',flipud(chH))

1
投票

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


0
投票

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上测试

© www.soinside.com 2019 - 2024. All rights reserved.