9

plot コマンドを使用して Figure をプロットし、set コマンドを使用して多くのプロパティを変更しました。また、プロットのハンドル (h1 など) も保存します。

必要なのは、ハンドルを使用して、コードの後半で同じ図を再度プロットすることです。plot コマンドを確認したところ、ハンドルを受け入れるバージョンが見つかりませんでした。また、Xdata と Ydata を取得し、それらを使用して同じ図を再プロットすることも考えました。

最も簡単な解決策は何ですか?

編集 1:PeterM が提案した copyobj に基づく実用的なサンプル コード。

hf(1) = figure(1);
plot(peaks);

hf(2) = figure(2);
plot(membrane);

hf(3) = figure(3);
ha(1) = subplot(1,2,1);
ha(2) = subplot(1,2,2);

for i = 1:2
    hc  = get(hf(i),'children');
    hgc = get(hc, 'children');
    copyobj(hgc,ha(i));
end

編集2:図(凡例を含む)をサブプロットにコピーできるこの関数も見つけました。

4

4 に答える 4

5

私は以前にこの状況に遭遇したことがあります。何をしようとしているかによっては、関数copyobjが適切な場合があります。この関数を使用すると、1 つの軸の内容を取得して、それを新しい Figure にコピーできます。

于 2013-08-28T02:53:22.667 に答える
5

@PeterMの良い答えを改善するには、1つの簡単な方法は次のとおりです。

fig2H=copy(gcf) % or change gcf to your figure handle

ただし、軸のみが必要な場合、または図全体が必要な場合は、必要に応じて異なります...(ところで、凡例ハンドルをコピーしていないようです)。

于 2013-08-28T03:22:02.397 に答える
1

を使用saveasして Figure をファイルに保存し、を使用しopenてこのファイルからまったく同じ Figure をロードできます。

于 2013-08-28T01:45:15.767 に答える
0

これは、目的を達成するための最も怠惰な方法です。

% Sample plot
f1 = figure(1);
plot(0:0.1:2*pi, sin(0:0.1:2*pi));
f2 = figure(2);

% The code you need
saveas(f1, 'temp.fig')
f2 = hgload('temp.fig')
delete('temp.fig')
于 2013-08-28T08:11:35.723 に答える