Contour plot for a non rectangular object

57 views (last 30 days)
I have this case that I worked out in another software.
In the attached file, you can see the X,Y coordinates. The third column represents the results that I need to plot in a contour silimar to the one in the image above.
I tried several codes, but all of them plot on a rectagular area and/or not showing the same shape for the contour area. For example, the following code:
xyz = xlsread('data.xlsx');
x=xyz(2:end,1);
y=xyz(2:end,2);
z=xyz(2:end,3);
[X,Y]=meshgrid(min(x):max(x),min(y):max(y));
Z=griddata(x,y,z,X,Y);
contour(X,Y,Z)

Accepted Answer

William Rose
William Rose on 5 Oct 2022
[X,Y]=meshgrid(x,y) makes a grid where all the x values are the same across the grid, and likewise for yhe y values.
You can fix it by making your own X and Y instead of using meshgrid.
Nx=41; Ny=9;
dx=1; dy=1; %adjust as desired
x=((0:Nx-1)-(Nx-1)/2)*dx; y=((0:Ny-1)-(Ny-1)/2)*dy;
[X,Y]=meshgrid(x,y); %initial approximation
Z1=X+2*Y;
subplot(211); surf(X,Y,Z1);
xlabel('X'); ylabel('Y'); axis equal; view(0,90)
%next: adjust the grid Y-values
Yadj=Y;
for i=1:Nx
if i<=5||i>=37
ymult=1;
elseif i>=32
ymult=(i-25)/12;
elseif i<=10
ymult=(17-i)/12;
else
ymult=0.5;
end
Yadj(:,i)=ymult*Y(:,i);
end
subplot(212); surf(X,Yadj,Z1);
xlabel('X'); ylabel('Yadj'); axis equal; view(0,90)
It works. The code to adjust the y-values is not very elegant, but it demonstrates the possibilities for creating a non-retangular grid.
  4 Comments
Ghazwan
Ghazwan on 6 Oct 2022
Thank you, William. This is excellent.
Your code gave me a good idea of what to do next. After I generate the proper coordinate array, I will interpolate the original contour data into the new array. This way, I can ensure that the contour data will get appropriately mapped into the new coordinate points.
William Rose
William Rose on 6 Oct 2022
@Ghazwan, you are welcome. Your plan sounds good.

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!