Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove spacing in matlab subplot

How should i remove the empty space between these images?i need to combine all these images without any space.


bot=imread('bot.jpeg');

for i= 1:25
subplot(5,5,i),imshow(bot);
end

enter image description here

like image 340
Shivam Sharma Avatar asked Feb 08 '15 18:02

Shivam Sharma


2 Answers

You need to specify axes' 'Position' property when you create them with subplot.

Also, you have to adjust figure aspect ratio to match that of the image, so that all figures fit without vertical or horizontal space.

If you show a different image in each subplot, all images should have the same aspect ratio, otherwise it's not possible for them to fit in the figure without empty spaces.

bot = imread('peppers.png');
for i= 1:25
    subplot('Position',[(mod(i-1,5))/5 1-(ceil(i/5))/5 1/5 1/5])
    imshow(bot); %// or show a different image on each subplot
end
p = get(gcf,'Position');
k = [size(bot,2) size(bot,1)]/(size(bot,2)+size(bot,1));
set(gcf,'Position',[p(1) p(2) (p(3)+p(4)).*k]) %// adjust figure x and y size

enter image description here

like image 189
Luis Mendo Avatar answered Oct 06 '22 10:10

Luis Mendo


The most canonical way would be to take a look at this answer by bla here. This answer uses a function from the MATLAB File Exchange in order to achieve the answer. However, that requires learning a new function and playing around with the parameters.

If you want something working immediately, instead of showing each subimage in a separate grid on a plot, I would simply create a new image that stacks all of those images together:

bot_new = repmat(bot, [5 5]);
imshow(bot_new);

repmat takes a matrix and duplicates / stacks / tiles itself together for as many rows and as many columns (or in any dimension) that you want. In this case, I chose to stack the image so that there are 5 rows and 5 columns of it. We next show the stacked image together with imshow.

If we used an example image from MATLAB:

bot = imread('onion.png');

If we ran the above code that tiles the images together and showed the image, this is what we get:

enter image description here

like image 27
rayryeng Avatar answered Oct 06 '22 09:10

rayryeng