ループで、for
1 つの図に表示される可変数のサブプロットを作成します。各サブプロットを個別のフル サイズのプロットおよび画像ファイル (できれば JPG) として保存することはできますか?
質問する
5295 次
2 に答える
2
新しい Figure に copyobj を使用してから、新しい Figure ハンドルで saveas を使用します。
あなたが提供すべきサンプルコード ( SSCCEを参照):
figure
nLines = 2;
nColumns = 3;
handles = zeros(nLines,nColumns)
for line = 1:nLines
for column = 1:nColumns
handles(line,column)=subplot(nLines,nColumns,column+(line-1)*nColumns);
plot([line column]);
title(sprintf('Cool title (%d,%d)',line,column))
ylabel(sprintf('Ylabel yeah (%d,%d)',line,column))
xlabel(sprintf('Xlabel nah (%d,%d)',line,column))
end
end
ここでは、サブプロット ハンドルを保存していますが、保存していないとします。
axesH = findobj(gcf,'Type','axes','-not','Tag','legend'); % This will change the order from which the axes will be saved. If you need to save in the correct order, you will need access to the subplot handles
nAxes = numel(axesH)
newFig = figure;
for k=1:nAxes
newAxes=copyobj(axesH(k),newFig);
% Expand subplot to occupy the hole figure:
set(newAxes,'OuterPosition',[0 0 1 1]);
tightInset=get(newAxes,'TightInset');
set(newAxes,'Position',[tightInset(1:2) [1 1]-(tightInset(3:4)+tightInset(1:2))])
saveas(newFig,sprintf('axes_%d.jpg',k),'jpg');
delete(newAxes);
end
delete(newFig);
保存された 1 つの軸の例:
デッドスペースを取り除くために、このトピックで入手可能な情報を使用しました。
于 2013-09-30T03:36:45.743 に答える
1
subfigure
の軸へのハンドルがあるとします。次のようにとha
を使用できます。getframe
frame2im
F = getframe(ha);
[im,map] = frame2im(F);
if isempty(map)
imwrite(im,'subframe.jpg');
else
imwrite(im,map,'subframe.jpg');
end
これにより、軸が画面に表示されるとおりに保存されるため、保存する前に Figure のサイズを変更してください。Figure の領域をできるだけ多く使用するには、MATLAB Central で関数subfigure_tightを試してください。
于 2013-09-30T03:36:07.213 に答える