如何将图形加载和卸载到matlab应用程序';s轴?

如何将图形加载和卸载到matlab应用程序';s轴?,matlab,matlab-figure,matlab-app-designer,Matlab,Matlab Figure,Matlab App Designer,我目前有一个.m文件,可以创建大量的数字。它目前将这些数字输出到powerpoint中,每个数字一张幻灯片,但我更希望使用更友好的方式。我想使用一个带有app designer的应用程序来实现这一点,但我不知道如何使图形显示在GUI中 我的目标是:在GUI的左侧有一个下拉列表,让您选择一个图形标题,然后该图形将显示在GUI右侧的大轴中 代码当前在保存每个地物后关闭,但如有必要,可以进行更改 有人能帮我吗?这可能吗?不是一个完整的答案,但是一些关于如何加载创建的.fig文件并将轴复制到uipane

我目前有一个.m文件,可以创建大量的数字。它目前将这些数字输出到powerpoint中,每个数字一张幻灯片,但我更希望使用更友好的方式。我想使用一个带有app designer的应用程序来实现这一点,但我不知道如何使图形显示在GUI中

我的目标是:在GUI的左侧有一个下拉列表,让您选择一个图形标题,然后该图形将显示在GUI右侧的大轴中

代码当前在保存每个地物后关闭,但如有必要,可以进行更改


有人能帮我吗?这可能吗?

不是一个完整的答案,但是一些关于如何加载创建的
.fig
文件并将轴复制到
uipanel
的指针

首先创建一些图形:

f1 = figure();
subplot(211)
imagesc(rand(100));
subplot(212)
plot(rand(100,1))

saveas(f1, 'figure1.fig')
然后将此图形加载到GUI中。一个非常简单的GUI示例:

fig = uifigure;
fig.Position = [100 100 800 600]
pan1 = uipanel(fig, 'Title', 'Figure', 'Position',[0 0 600 600])
pan2 = uipanel(fig, 'Title', 'Select Figure', 'Position',[600 0 200 600])

f_new = openfig('figure1.fig', 'invisible'); % load 'invisible' so it doesn't popup
ax_to_copy = f_new.Children;  % works even with subplots!

% and copy the loaded axes to the uipanel:
copyobj(ax_to_copy, pan1)
结果:


不是一个完整的答案,但是一些关于如何加载创建的
.fig
文件并将轴复制到
uipanel
的指针

首先创建一些图形:

f1 = figure();
subplot(211)
imagesc(rand(100));
subplot(212)
plot(rand(100,1))

saveas(f1, 'figure1.fig')
然后将此图形加载到GUI中。一个非常简单的GUI示例:

fig = uifigure;
fig.Position = [100 100 800 600]
pan1 = uipanel(fig, 'Title', 'Figure', 'Position',[0 0 600 600])
pan2 = uipanel(fig, 'Title', 'Select Figure', 'Position',[600 0 200 600])

f_new = openfig('figure1.fig', 'invisible'); % load 'invisible' so it doesn't popup
ax_to_copy = f_new.Children;  % works even with subplots!

% and copy the loaded axes to the uipanel:
copyobj(ax_to_copy, pan1)
结果:


如果每个图形只有一个
,则可以使用
copyobj
在存储的图形中复制轴的内容(请参阅文章)。如果创建的图形有子图,这会变得有点棘手,因为您必须初始化与原始图形相同的子图。另一个选项是将所有图形保存为图像(例如png或jpg),并根据下拉菜单中的选择执行
imload
imshow
。不幸的是,这样您就无法再与图形交互。您可以在
uipanel
中绘制图形中的所有内容,然后加载图形并使用类似
myPanel.parent=appContainer
的内容重新设置面板的父级,谢谢!由于我的代码已经构建,GUI还没有构建,而且所有的图形都是一个轴,我相信Rinkert的答案最符合我的需要。然而,如果我从零开始,我可能会使用Wolfie的解决方案(这将需要许多更改,特别是因为我计划在将数字写入powerpoint的代码中保留这些更改)。我会实施这个,并让你知道它是否有效。@rinkert你能更好地解释一下如何实施你的第一个想法吗?我不能让它工作。这似乎正是我所需要的,但我一直在使用copyobj时出错。如果每个图形只有一个
,您可以使用
copyobj
将轴的内容复制到存储的图形中(参见文章)。如果创建的图形有子图,这会变得有点棘手,因为您必须初始化与原始图形相同的子图。另一个选项是将所有图形保存为图像(例如png或jpg),并根据下拉菜单中的选择执行
imload
imshow
。不幸的是,这样您就无法再与图形交互。您可以在
uipanel
中绘制图形中的所有内容,然后加载图形并使用类似
myPanel.parent=appContainer
的内容重新设置面板的父级,谢谢!由于我的代码已经构建,GUI还没有构建,而且所有的图形都是一个轴,我相信Rinkert的答案最符合我的需要。然而,如果我从零开始,我可能会使用Wolfie的解决方案(这将需要许多更改,特别是因为我计划在将数字写入powerpoint的代码中保留这些更改)。我会实施这个,并让你知道它是否有效。@rinkert你能更好地解释一下如何实施你的第一个想法吗?我不能让它工作。这似乎正是我所需要的,但我在copyobj上不断出错。谢谢你的帮助!这在appdesigner中也能像我希望的那样起作用。起初我认为它不起作用,但后来我意识到我试图将图形写入应用程序中预定义的轴,而不是面板中。我不太明白为什么会出现这样的问题,但将app.UIAxes更改为app.RightPanel使其正常工作。感谢您的帮助!这在appdesigner中也能像我希望的那样起作用。起初我认为它不起作用,但后来我意识到我试图将图形写入应用程序中预定义的轴,而不是面板中。我不太明白为什么会出现这样的问题,但将app.UIAxes更改为app.RightPanel使其正常工作。