【问题标题】:Resize figure to Axes Position in Matlab在Matlab中将图形调整为轴位置
【发布时间】:2012-12-16 20:31:48
【问题描述】:

我有一个带有条形图的图形,我删除了所有刻度和标题,所以现在只显示条形本身。我想让这个数字缩小到条形图的大小。 我尝试了以下方法:

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],下图没有(自动模式)。请注意,轴大小不会改变(用黑色方块表示) *由于打开绘图工具,有一些变化,它停靠了这个数字。

【问题讨论】:

  • 您能否发布一个示例图并显示您希望在其中“缩小”哪些区域?

标签: matlab matlab-figure


【解决方案1】:

有帮助吗?

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

【讨论】:

  • 它可以工作,但会使情节倾斜,因此我得到的是长矩形而不是正方形。我希望 x 和 y 具有相同的纵横比
  • 我在回答者中添加了图形重新缩放。
  • 这实际上让事情变得更糟。也许我以前不清楚,但问题在于轴而不是数字。这是制作DataAspectRatio[1 1 1] 的结果,这使轴保持相同大小但会更改轴。我会在问题中添加一张图片,希望能更清楚地说明这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
相关资源
最近更新 更多