Overlaying Contour plot and png image

49 views (last 30 days)
lunalara
lunalara on 11 May 2017
Commented: HARISH KUMAR on 23 Jan 2023
Hello all,
I am looking to produce a contour plot with an image in the background denoting location points corresponding with the contours. I have scoured the MATLAB answers and other internet sources and have found many overlay methods, but am having trouble with scaling the image to the size of the contour plot figure.
I am combining the two figures:
and am getting the following with the contour in the far right corner:
If anyone may have some insight to this problem, I would be eternally grateful. Thank you for your time!
I have the following code:
figure
rotor = imread('turbdots.png');
imagesc([0 9],[0 21],rotor)
imshow(rotor)
hold on
contourf(Qww.Q4mat,'Showtext','on')
xlabel("z position")
ylabel("y position")
title("Q4")
set(gcf,'numbertitle','off','name','y vs z - ww contour')

Answers (1)

Gaurav Ahuja
Gaurav Ahuja on 16 May 2017
It is difficult to identify the reason for obtaining the results shown by you, as there is no data provided to deal with. It would be helpful if you could share the image you want to overlay and elaborate on how did you obtain the contour for it, as your results suggest a miss match in the size of image and contour.
However, based on the description provided by you, following is kind of a kludge that should work for your use case. So I think the issue you were facing was because the 'contourf' was drawn on the same axis and axis for the figure was bigger.
Therefore we would try to follow the following order of steps
1) Draw the contour first
2) Note the range of axis (given by 'XLim' and 'YLim')
3) Hold on to current axis
4) Do 'imshow()' with the specification of the 'Xdata' and 'Ydata' as the range seen in step (2) (Xdata = XLim and Ydata = YLim) and preserve its handle.
5) Change the 'AlphaData' of ImageHandel to value between '0' and '1' (opaque) to adjust the transparency.
if true
% obtaining the contour plot and image data in some variable
Z = 10 + peaks; % to get contour
img = imread('coloredChips.png'); % image to overlay
% drawing contour and overlaing image
figure
[c,cont] = contourf(Z,2)
contP = get(cont,'Parent')
X = contP.XLim
Y = contP.YLim
hold on
imgh = imshow(img,'XData',X,'YData',Y)
imgh.AlphaData = .2
end
  2 Comments
HARISH KUMAR
HARISH KUMAR on 23 Jan 2023
@Gaurav Ahuja Hi, I am facing same kind of problem, i have image i cropped it, the place where i want do some image processing. i cropped it, did image processing, using that data i plotted contour. Now i want to place the contour plot to its orginal place (note : i should be able set transparency to that contour plot so that i can see my original image through contour).
Please guide me

Sign in to comment.

Categories

Find more on Contour Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!