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 回答