2016-04-02 7 views
4

2つの図が2つの別々の図を含む別々のファイルA.figB.figに保存されているとします。 A.figをロードして、hold onのような処理をして、A.figの図の中にB.figをロードして、両方のプロットが同じ軸になるようにする方法はありますか?2つの保存された図形がMATLABの単一のグラフに表示されます

+2

可能な複製(http://stackoverflow.com [MATLABでグラフのデータをエクスポートする方法を?]/questions/15216175/how-to-export-data-from-the-matlab) – excaza

+0

も参照してください:[FIGファイル形式](http://undocumentedmatlab.com/blog/fig-files-format)on Figureを開く必要のないメソッドのための記述されていないMATLAB。 – excaza

+0

誰かが私の質問に非常に徹底的に答えてくれました。どこに行ったのですか? – secluded

答えて

4

質問は実際にはthisの複製ではないと思います。 OPは、データを抽出する方法を求めるのではなく、2つの格納された図を結合する方法を求めています。確かに、彼はデータを抽出して再びプロットすることができました。しかし、よりエレガントな解決策は


...あり、実際のプロットはfigureの子であるaxesの子です。したがって、最初のaxesに2番目のaxesの子をコピーして、copyobjとすることで、必要なものを達成できます。その前に、数字をopenfigで読み込みます。このメソッドは、異なるタイプの 'プロット'(linearea、...)をコピーする利点があります。

A.figB.figからコピーするコードは次のようであるとR2014bから始まるに動作します:

fig1 = openfig('A'); 
fig2 = openfig('B', 'invisible'); 
copyobj(fig2.Children.Children, fig1.Children); 

あなたが前R2014bにMatlabのバージョンを持っている場合は、あなたがsetgetを使用する必要がありますあなたは. -notationを使うことができないので、機能します。詳細はhereを参照してください。あなたはこのように数字をロードした後、現在の座標軸を取得するためにgcaを使用することができ、次のいずれか

fig1 = openfig('A'); 
ax1 = gca; 
fig2 = openfig('B', 'invisible'); 
ax2 = gca; 
copyobj(get(ax2,'children'), ax1); 

...またはgetそれらは手動でこのようなfigure -handleから:

fig1 = openfig('A'); 
fig2 = openfig('B', 'invisible'); 
copyobj(get(get(fig2,'children'),'children'), get(fig1,'children')); 

次のスクリプトは2つの図を作成し、上記のコードを適用してそれらを結合します。
MatlabバージョンがR2013b以上の場合は、documentationに示唆されているようにをsavefigに置き換えてください。

%% create two figure files 
x = linspace(0,2*pi,100); 
figure; hold on; 
plot(x,sin(x),'b'); 
area(x,0.5*sin(x)); 
set(gca,'xlim',[0,2*pi]); 
hgsave('A'); 
figure; hold on; 
plot(x,cos(x),'r'); 
area(x,0.5*cos(x),'FaceColor','r'); 
hgsave('B'); 

%% clear and close all 
clear; 
close all; 

%% copy process 
fig1 = openfig('A'); 
fig2 = openfig('B', 'invisible'); 
copyobj(get(get(fig2,'children'),'children'), get(fig1,'children')); 
close(fig2); 

手動でサブプロットに組み合わせる場合、これは次のような結果を与える:の

example

+1

解決策にはR2014b以上が必要ですドット記法でグラフィックオブジェクトのプロパティを扱い、 'savefig'のためにR2013bまたはそれより新しいもの – excaza

+0

@excaza提案をありがとう。私はget-equivalentをバージョン Matt

関連する問題