# Plot contour lines on top of imagesc?

조회 수: 26(최근 30일)
Razvan 2012년 12월 12일
Hi,
I'm trying to make a contour plot with one of the variables being discrete (integer). I try to combine somehow the 2 following plots:
y = [1:10]';
x = 1:0.01:10;
z = repmat(y, [1,901]) - repmat(x, [10,1]);
figure
subplot(2,1,1)
contourf(x,y,z)
xlabel('x (continuous)');
ylabel('y (discrete)')
subplot(2,1,2)
imagesc(flipud(z))
xlabel('x (continuous)');
ylabel('y (discrete)')
colormap(jet(256))
In the top panel I have a (filled) contour plot but the lines are diagonal (not step-like) so this is not good for integer y values. The bottom plot shows the discrete y values and (almost) continuous x values but I don't know how to draw the contour lines on top of this? Is there a quick way of doing this?
Thanks!

댓글을 달려면 로그인하십시오.

### 채택된 답변

Sean de Wolski 2012년 12월 12일
편집: Sean de Wolski 2012년 12월 12일
You can specify x/y for imagesc so that the image is not shown against its index. From there you can simply use hold on and contour:
y = [1:10]';
x = 1:0.01:10;
z = repmat(y, [1,901]) - repmat(x, [10,1]);
figure
subplot(2,1,1)
contourf(x,y,z)
xlabel('x (continuous)');
ylabel('y (discrete)')
subplot(2,1,2)
imagesc(x,y,flipud(z)) %specify x/y
xlabel('x (continuous)');
ylabel('y (discrete)')
colormap(jet(256))
hold on %hold it on
contour(x,y,flipud(z),'color','k') %contour over it
In that case I would grab the 'CData' from the image and bin it using histc (essentially replacing image values with indexes into contour levels). Then draw a contour plot of this.
y = [1:10]';
x = 1:0.01:10;
z = repmat(y, [1,901]) - repmat(x, [10,1]);
figure
subplot(2,1,1)
contourf(x,y,z)
xlabel('x (continuous)');
ylabel('y (discrete)')
subplot(2,1,2)
h = imagesc(x,y,flipud(z));
xlabel('x (continuous)');
ylabel('y (discrete)')
colormap(jet(256))
hold on
D = get(h,'CData'); %image data
[~,idx] = histc(D,linspace(m(min(D)),max(max(D)),10)); %bin it
contour(x,y,idx,'color','k') %contour of the bins
##### 댓글 수: 5표시숨기기 이전 댓글 수: 4
Sean de Wolski 2012년 12월 13일
You're welcome!
I would image it just came down to changing the edges in the call to histc()?

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

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

Start Hunting!