Matlab GUI: перенести сюжет в новое окно - PullRequest
2 голосов
/ 13 сентября 2011

Я столкнулся с такой проблемой, и надеюсь, что вы, ребята, могли бы помочь мне здесь.

У меня есть график в моем графическом интерфейсе, содержащий несколько строк с разными linspecs и группой легенд.И я создал контекстное меню, которое должно позволить пользователям открывать ТОЧНО такой же сюжет (сохраняя все настройки линии, заголовок, условные обозначения и т. Д.) В новом окне (фигура по умолчанию, где она может сохранять / редактировать фигуру).).Однако я не смог найти простой способ переноса графика, кроме как повторно запустить команды построения, которые довольно сложны (выведите на экран другие данные и т. Д.)

Итак, я ищу решение в следующемдвумя способами:

  1. Есть ли простой способ перенести график в новое окно рисунка?

  2. или можно сохранить график напрямуюс текущим интерфейсом?

Для 2, я хотел бы уточнить, что я хочу сохранить только график, а не весь интерфейс GUI.Я пробовал saveas(handle.Plot,...), но он сохранил интерфейс графического интерфейса как сущность.

Надеюсь, суть была ясна, спасибо за ваше время.Приветствия.

1 Ответ

3 голосов
/ 13 сентября 2011

Для этой задачи вы, вероятно, можете использовать встроенную функцию Matlab copyobj, которая делает именно это (то есть первый вариант, упомянутый в вашем вопросе).

Следующий фрагмент кода демонстрируетего использование:

h1=figure;
a1=plot((1:100),rand(1,100),'r-');
hold on
plot((1:100),rand(1,100),'b+');
legend({'plot1';'plot2'});
h2=figure;
copyobj(get(h1,'children'),h2);

Надеюсь, что оно работает и в вашем случае.

ОБНОВЛЕНИЕ: Насколько я понимаю, ваше второе решение будет включать saveas функция, которая, к сожалению, работает с окружением фигуры, а не с осями (как вы это испытали).Поэтому обходной путь, вероятно, будет включать копирование нужных осей на новую фигуру с помощью метода, описанного выше, и затем использовать saveas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...