Имея график из трех кривых в файле .fig, я хотел бы добавить еще один график (с hold all
и plot
), но поместить его позади одной из уже существующих кривых (т.е. убедиться, что последний исходный кривая остается на переднем плане). Можно ли этого добиться без извлечения данных графика и повторного построения графика?
Как изменить порядок линий на рисунке Matlab?
Ответы (4)
Если вы знаете дескриптор строки, которую вы хотите поставить сверху (например, потому что вы вызвали h = plot(...)
, вы можете использовать uistack
uistack(h,'top')
Кроме того, вы можете напрямую управлять порядком дочерних элементов ваших текущих осей. Следующее помещает самую последнюю кривую сверху.
chH = get(gca,'Children')
set(gca,'Children',[chH(end);chH(1:end-1)])
axesHandle.Children = circshift(axesHandle.Children, 1);
- person j-hap; 23.04.2020
Разрешение, данное @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.