Как изменить порядок линий на фигуре Matlab? - PullRequest
27 голосов
/ 06 октября 2011

Учитывая график из трех кривых в файле .fig, я хотел бы добавить еще один график (с hold all и plot), но поместите его позади одной из уже существующих кривых ( т.е. убедитесь, что последняя исходная кривая остается на переднем плане). Может ли это быть достигнуто без необходимости извлечения данных графика и повторного построения?

Ответы [ 4 ]

44 голосов
/ 06 октября 2011

Если вам известен дескриптор строки, которую вы хотите сверху (например, потому что вы позвонили h = plot(...), вы можете использовать uistack

uistack(h,'top')

В качестве альтернативы, вы можете манипулироватьПорядок потомков ваших текущих осей напрямую. Следующее ставит последнюю кривую сверху.

chH = get(gca,'Children')
set(gca,'Children',[chH(end);chH(1:end-1)])
2 голосов
/ 07 мая 2015

Разрешение, данное @Jonas с использованием свойства 'Children', не работает в заданном формате.Его следует изменить следующим образом:

chH = get(gca,'Children')
set(gca,'Children',flipud(chH))
1 голос
/ 01 мая 2014

Когда на изображении имеется легенда, пара get(gca,...) и set(gca,...) приводит к ошибке: «Ошибка при использовании set . Дочерние элементы могут быть установлены только на собственную перестановку» В этом случае я использовал инструмент выбора GUI на рисунке, чтобы выбрать объекты осей, а затем получить и настроить работу только с графиками, как требуется, а не с легендой. После вызова набора вы должны обновить легенду, позвонив legend(...). У меня было 5 участков, которые мне нужно было изменить. Если вы не уверены в порядке, пермутируйте сюжеты по два за один раз, обновите легенду и посмотрите, нужен ли вам этот порядок

0 голосов
/ 04 января 2019

Свойство 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

...