1

棒グラフを含む図があり、すべての目盛りとタイトルを削除したため、棒自体のみが表示されます。図を棒グラフのサイズに縮小したいと思います。私は次のことを試しました:

set(gca,'Units', 'Pixels');  
set(gca,'XLim', [0.5 10.5],'YLim', [0 1],'Units', 'Pixels');
a=get(gca, 'Position');
set(gcf, 'Units', 'Pixels');
b=get(gcf,'Position');
set(gca, 'DataAspectRatioMode', 'manual', 'XLimMode', 'manual','YLimMode', 'manual')
set(gca, 'Position', [5,5,a(3),a(4)]);
set(gcf, 'Position', [10,10, a(3)+10,a(4)+10]);

ただし、これは機能しません。いくつかの調査の後、主な問題は軸が軸のサイズにスナップしないことであることがわかりました。図内のすべてのプロットのサイズを計算せずにこれを解決する方法はありますか? 以下のプロットの周りの空白領域を減らしたい: オリジナルフィギュア これはコードを実行した後の図ですが、まだ多くのスペースが残っています。これは、これが軸のサイズであるためです:

コード実行後の図

ありがとう

編集:問題は、下の画像で示されているように、軸のサイズに起因します。上の画像はDataAspectRatio設定されて[1 1 1]おり、下の画像は設定されていません(自動モード)。軸のサイズは変わらないことに注意してください (黒い四角で示されています)。 手動縦横比の図 自動縦横比の図

4

1 に答える 1

0

それは役に立ちますか?

f = figure;

% generate bar
y = [75.995,91.972,105.711,123.203,131.669,...
       150.697,179.323,203.212,226.505,249.633,281.422];
bar(y);
% end of graph  

axis tight;
allAx = findall(f,'type','axes');
pa = get(gca, 'Position');
pf = get(f, 'Position');
% change shape of the figure to match                                                                                         
% xsize(figure)/yszie(figure) = xsize(axis)/ysize(axis)                                                                       
pf(4) = ((pf(3)-pf(1))*pa(4)+pa(2)*(pf(1)-pf(3))+pf(2)*pa(3)-pa(1)*pf(2))/(pa(3)-pa(1));
set(allAx, 'Units', 'Normalized', 'Position', [0, 0, 1, 1]);
set(f, 'Position', pf);
于 2013-01-02T13:20:54.860 に答える