Need half of my contour plot

Hello I have a contour of the pressures over a surface. Basically, I had vectors x and y which were locations on the surface and on each location, I had a value for pressure. I have a rectangular plot. I was wondering if there is a way to split my plot from the diagonal and show just the results for either upper or lower triangles?

 采纳的回答

Kye Taylor
Kye Taylor 2013-7-18
编辑:Kye Taylor 2013-7-18
Check out the tril and triu functions. For example if you have data similar to
[x,y]= meshgrid(-1:.05:1);
z = x.^2+y.^2;
contour(x,y,z)
Try something like
zLowerTri = tril(z);
contour(x,y,zLowerTri)
Since contour plots with the origin at lower left instead of upper right, you may prefer either
zLowerTri = tril(z);
contour(x,y,zLowerTri)
axis ij
or
contour(x,y,fliplr(tril(fliplr(z))))

4 个评论

Thank you very much for your response. Actually, it cuts the contour from another diagonal. Is there any way to do it for the other diagonal? Also, is there any way to show the deleted part in white?
I used "contour(x,y,fliplr(tril(fliplr(z))))" and I got what I wanted. Thank you very much. I now need to Also, to show the deleted parts in white? Is there any way to do that? In the deleted area, my contour is all red which corresponds to the value=0 in my color map.
use "nan" as i mentioned below to make that part invisible... functions you use {ex:tril(z)} replace the data values with zero,which itself could be a data!!!
Thank you very much. I now have what I wanted.

请先登录,再进行评论。

更多回答(1 个)

hello maryam, run following lines of code.
x=0:0.1:10;
y=x;
j=1;
z=meshgrid(x,y);
h=ones(length(x),length(x))*nan;
for i=1:length(x)
for j=1:length(y)
if i>j
h(i,j)=z(i,j);
end
end
end
surf(sin(h)./sqrt(h))
figure
contourf(sin(h)./sqrt(h))

类别

帮助中心File Exchange 中查找有关 Contour Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by