contour plot based on xyz data
110 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
SGMukherjee
el 27 de Sept. de 2018
I have xyz data as attached. X is longitude, y is altitude and z is electron density. For each value of longitude from 75 to 95, I have altitude values of 100 to 2000 with corresponding electron density values for each altitude. I want a colored contour plot with these data. Please help.
0 comentarios
Respuesta aceptada
Star Strider
el 27 de Sept. de 2018
Your data are gridded. You only need to reshape them into your ‘X’, ‘Y’, and ‘Z’ matrices:
D = load('data_new.txt');
[Du,D1] = unique(D(:,1));
Dd = diff(D1);
Dr = reshape(D, Dd(1), [], size(D,2));
X = Dr(:,:,1);
Y = Dr(:,:,2);
Z = Dr(:,:,3);
figure
contourf(X, Y, Z)
2 comentarios
wadah mahmoud
el 8 de Mzo. de 2020
Dear Star Strider
Thank you for the providing code, I used it and it is very helpful for me but i need your assiatnce in " how to calculatethe maximum point and showing it on the plot" , if you need I will provide you a text file of values.
Thank you for assistance.
Wadah
Adam Danz
el 9 de Mzo. de 2020
Editada: Adam Danz
el 9 de Mzo. de 2020
"how to calculatethe maximum point and showing it on the plot"
[maxY, maxX] = find(Z == max(Z(:)));
hold on
plot(X(maxX), Y(maxY), 'rx')
If you'd like to select the entire contour that surrounds the max value, you can use getContourLineCoordinates() from the file exchange like so,
cm = contourf(X,Y,Z);
contourTable = getContourLineCoordinates(cm);
maxLevel = max(contourTable.Level);
xMaxLevel = contourTable.X(contourTable.Level == maxLevel);
yMaxLevel = contourTable.Y(contourTable.Level == maxLevel);
hold on
plot(xMaxLevel, yMaxLevel, 'r.', 'MarkerSize', 10)
Más respuestas (1)
jonas
el 27 de Sept. de 2018
Editada: jonas
el 27 de Sept. de 2018
You just need to interpolate gridded data.
xyz=dlmread('data_new.txt');
x=xyz(:,1);
y=xyz(:,2);
z=xyz(:,3);
[X,Y]=meshgrid(min(x):max(x),min(y):max(y));
Z=griddata(x,y,z,X,Y);
contour(x,y,Z)
2 comentarios
Daniyal Altaf Baloch
el 7 de Feb. de 2020
Hi Jonas. Your answer perfectly works except for the typo in the last line.
Instead of
contour(x,y,Z)
it should be
contour(X,Y,Z) i.e capital X and Y will work .
Ver también
Categorías
Más información sobre Contour Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!