2013-01-02 319 views
1

我有一個帶有條形圖的圖形,我已經刪除了所有的圖形和標題,所以現在只顯示了圖形條本身。我想讓這個數字縮小到條形圖的大小。 我已經試過如下:在Matlab中調整圖形的座標軸位置

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]); 

然而,這是行不通的。經過一些調查後,我發現主要問題是軸不能捕捉軸的大小。 任何方式來解決這個問題,而不計算圖中每個圖的大小? 我要減少圍繞以下情節的空白區域: original figure 這是運行我的代碼後的數字,仍然有很大的空間仍然存在,這是因爲這是軸的尺寸:

figure after code has run

由於

編輯:問題從軸尺寸由下面的圖片所示莖,上圖是與DataAspectRatio設置爲[1 1 1]和不具有(自動模式)下的畫面。請注意,軸的大小不會改變(用黑色方塊標出) *由於打開繪圖工具而導致某些更改,這些工具對接該圖。 figure with manual aspect ratio figure with automatic aspect ratio

+2

你可以發佈一個示例圖並顯示你希望「縮小」的區域嗎? –

回答

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); 
+0

編號的軸是正確的大小,軸不是。 – Daniel

+0

我更新了回答者。 – slitvinov

+0

它的工作原理,但扭曲的情節,讓我長矩形而不是正方形。我希望x和y具有相同的長寬比 – Daniel