Учитывая график трех кривых в файле .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