Учитывая график трех кривых в файле .fig, я хотел бы добавить еще один сюжет (с hold all и plot), но поместил его за одну из уже существующих кривых (т.е. убедитесь, что последний оригинал кривая остается на переднем плане). Может ли это быть достигнуто без необходимости извлекать данные сюжета и перерисовывать?
Как изменить порядок строк в фигуре Matlab?
Ответ 1
Если вы знаете дескриптор строки, которую хотите uistack сверху (например, потому что вы назвали 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))
Ответ 3
Когда изображение имеет легенду, пары get(gca,...) и set(gca,...) приводят к ошибке: "Ошибка при использовании установлена . Дети могут быть установлены только на перестановку себя"
В этом случае я использовал инструмент выбора графического интерфейса фигуры, чтобы выбрать объекты осей, затем получить и установить работу только с графиками по мере необходимости, а не с легендой. После вызова набора вам нужно обновить легенду, вызвав legend(...). У меня было 5 сюжетов, которые мне нужно было переупорядочить. Когда вы не уверены в порядке, перестраивайте графики по два за раз, обновите легенду и посмотрите, нужен ли вам этот заказ.
Ответ 4
Свойство 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