【发布时间】:2013-04-02 15:50:47
【问题描述】:
我不知道如何在 MATLAB 中完成以下操作。我有一个看起来像这样的图:
在图中,我有一个包含许多子图的面板和一个允许我查看面板的一部分的滚动条。
我想将面板的 整个 内容保存到 PNG 图像文件(不仅仅是可见部分),即我想要一个高矩形文件,而不是需要滚动。
生成图形的代码如下:
function draw(obj)
figure;
panel1 = uipanel('Parent',1);
panel2 = uipanel('Parent',panel1);
panelheight = obj.nIterations / 2;
set(panel1,'Position',[0 0 0.97 1]);
set(panel2,'Position',[0 1-panelheight 1 panelheight]); %%
nPlot = 1;
for i=1:obj.nIterations
models = obj.iterations{i};
for nModel=1:length(models)
subplot(obj.nIterations,length(models)*2,nPlot);
nPlot = nPlot + 1;
drawTransitions(models{nModel});
set(gca,'Parent',panel2);
subplot(obj.nIterations,length(models)*2,nPlot);
nPlot = nPlot + 1;
drawRewards(models{nModel});
set(gca,'Parent',panel2);
end
end
s = uicontrol('Style','Slider','Parent',1,...
'Units','normalized','Position',[0.97 0 0.03 1],...
'Value',1,'Callback',{@slider_callback1,panel2,panelheight});
end
我尝试了以下方法,但没有成功。
-
saveas功能可以保存整个图形,而不仅仅是面板。此外,它还会剪裁面板的不可见部分。 -
export_fig(panel2.'file.png')只提供纯灰色图像。
【问题讨论】:
-
这是个好问题。我也尝试做类似的事情,但不得不以
getframe解决,但这仅适用于打印屏幕并且会截断图像。 -
f=figure 怎么样; print(f,'-djpeg','file.jpg'); ?我不确定。
-
@MinLin,谢谢,但您的解决方案会截断图像,而我希望文件包含屏幕上不可见的位
-
如果您可以发布代码的最小工作示例,这将有所帮助,以便其他人可以尝试直接在 Matlab 中解决您的问题。
标签: matlab matlab-figure