1

MATLABに 2 つの図があり、どちらもサイズ (512x512) のデータをプロットするとしますが、1 つの図は軸パラメータを設定する外部プログラムによってプロットされています。もう1つは私がプロットしています(imagescを使用)。現在、数値、または軸のサイズが異なりますが、私の質問は、それらを等しくするにはどうすればよいですか? . 私の質問の理由は、ラテックス ドキュメントに含めるためにそれらを pdf 形式にエクスポートしたいということです。さらに処理せずに同じサイズにしたいのです。

よろしくお願いします、N

編集:図へのリンク

図 1: (大)

小さい図へのリンク (つまり、プロパティをコピーして図 1 に適用したいもの)

4

3 に答える 3

1

1.次のように、Figure と軸のハンドルを取得します。

 %perhaps the easiest way, if you have just this one figure:
 myFigHandle=gcf;
 myAxHandle=gca;
 %if not possible, you have to search for the handles:
 myFigHandle=findobj('PropertyName',PropertyValue,...)
 %you have to know some property to identify it of course...
 %same for the axes!

2. プロパティを次のように設定します。

%set units to pixels (or whatever you prefer to make it easier to compare to the other plot)
set(myFigHandle, 'Units','pixels')
set(myAxHandle, 'Units','pixels')
%set the size:
set(myFigHandle,'Position',[x_0 y_0 width height]) %coordinates on screen!
%set the size of the axes:
set(myAxHandle,'Position',[x_0 y_0 width height])  %coordinates within the figure!
于 2013-09-25T12:03:21.703 に答える
0

わかりました、@Lucius Domitius Ahenobaの答えに基づいて、私が思いついたのは次のとおりです。

hgload('fig1.fig'); % figure whose axis properties I would like to copy
hgload('fig2.fig');
figHandles = get(0,'Children');
figHandles = sort(figHandles,1); 
ax(1) = findobj(figHandles(1),'type','axes','-not','Tag','legend','-not','Tag','Colorbar');
ax(2) = findobj(figHandles(2),'type','axes','-not','Tag','legend','-not','Tag','Colorbar');

screen_pos1 = get(figHandles(1),'Position');
axis_pos1 = get(ax(1),'Position');

set(figHandles(2),'Position',screen_pos1);
set(ax(2),'Position',axis_pos1);

これは「前」の結果です。 ここに画像の説明を入力

これは「後」の結果です。 ここに画像の説明を入力

アスペクト比がまだオフであることを除いて、ほぼ正しい。軸に関連するすべてを均等化する方法を知っている人はいますか? (回答を投稿するときに質問することは想定されていませんが、上記をコメントとして追加することは少し扱いに​​くいことがわかりました!)

于 2013-09-25T14:28:17.200 に答える