gpt4 book ai didi

matlab - 如何在 MATLAB 图中设置子图大小?

转载 作者:太空宇宙 更新时间:2023-11-03 19:22:07 25 4
gpt4 key购买 nike

我经常需要将 10 张图像绘制在一起,但使用此代码会生成小图像:

img = rand(400,600); 
for i=1:10
subplot(2,5,i);
imshow(img);
title(['Image ' int2str(i)]);
end

如您所见,图像并未使用屏幕中的所有可用空间。我怎样才能增加大小,或减少它们之间的填充/边距?

enter image description here

感谢您的帮助。

最佳答案

我认为没有简单的方法可以做到这一点。有两种选择:

首先,使用子图的位置部分:

>> subplot(2,5, i, [l, b, w, h])

并计算左、下、宽、高。

或者,获取返回轴的句柄:

>> h(i) = subplot(2,5,i);

然后修改坐标轴。

>> set(h(1), 'position', [l, b, w, h] );

有许多页面会提供更多详细信息,例如 http://www.briandalessandro.com/blog/how-to-make-a-borderless-subplot-of-images-in-matlab/

[更新]

下面的代码更详细地说明了您可以为谁做您正在寻找的事情。这有点乏味。 0.95 和 0.02 只是为了提供一点填充。它们没什么神奇的。 :-)

要注意的另一件事是,我真的鼓励您使用“ii”作为索引变量(或其他变量),因为“i”被定义为 sqrt(-1)。最好不要使用“i”和“j”作为索引变量(尤其是在 Matlab 中)。

img = rand(400,600); 

figure(1);
clf();
hold on;

% Get the width and height of the figure
lbwh = get(1, 'position');
figw = lbwh(3);
figh = lbwh(4);

% Number of rows and columns of axes
ncols = 5;
nrows = 2;

% w and h of each axis in normalized units
axisw = (1 / ncols) * 0.95
axish = (1 / nrows) * 0.95

for ii=1:10

% calculate the row and column of the subplot
row = floor( ii/(ncols+1) ) + 1
col = mod( ii-1, ncols ) + 1

% calculate the left, bottom coordinate of this subplot
axisl = (axisw+0.02) * (col-1)
axisb = (axish+0.02) * (row-1)

% plot the subplot
h= subplot('position', [axisl, axisb, axisw, axish] );
imshow(img);
title(['Image ' int2str(ii)]);

pause
end

您将不得不玩弄它,让它完全按照您的意愿行事。 “帮助”是你的 friend 。

关于matlab - 如何在 MATLAB 图中设置子图大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com