MATLAB Answers

How to insert a saved .png figure into a subplot which is being created in a for loop?

103 views (last 30 days)
hello_world
hello_world on 28 Aug 2016
Edited: hello_world on 28 Aug 2016
Hello Friends,
I have the following code
for k = 1:2
subplot(1,3,k)
plot(randi(10,k));
end
I want to insert a saved .png (I prefer .png, but if it is easier for .fig, it is also ok) into this subplot which is being created in for loop at position subplot(1,3,1). This way, the inserted figure will come at the first position moving other two subfigures to the next available positions.
I will appreciate any advise!

Accepted Answer

Walter Roberson
Walter Roberson on 28 Aug 2016
subplot(1,3,1)
image( imread('ThePNGFile.png') );
for k = 1:2
subplot(1,3,k+1)
plot(randi(10,k));
end
See also the XData and YData properties of image() and imshow() if you want to draw an image at a particular location in an axes that has other graphics.
  4 Comments
Walter Roberson
Walter Roberson on 28 Aug 2016
ax = subplot(1, 3, 1);
fig = openfig('MyFile.fig', 'visible', 'off');
imh = findobj(fig, 'type', 'image');
copyobj(imh, ax);
delete(fig);

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 28 Aug 2016
Try this:
for k = 1:3
subplot(1,3,k)
% Insert image into subplot.
filename = whatever......
thisImage = imread(filename);
imshow(thisImage);
hold on;
% Now draw the plot over it.
plot(x, y);
drawnow;
end
  1 Comment
hello_world
hello_world on 28 Aug 2016
Thanks! What are x and y please?
Using your code as follows gives the same .png subfigure in all subplots:
for k = 1:3
subplot(1,3,k)
% Insert image into subplot.
filename = 'myFig.png';
thisImage = imread(filename);
imshow(thisImage);
hold on;
% Now draw the plot over it.
plot(randi(10,k));
%plot(x, y);
drawnow;
end
It does not insert anything from plot(randi(10,k)); for subplot position 2 and 3.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!