Borrar filtros
Borrar filtros

contour plot based on xyz data

110 visualizaciones (últimos 30 días)
SGMukherjee
SGMukherjee el 27 de Sept. de 2018
Editada: Adam Danz el 9 de Mzo. de 2020
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.

Respuesta aceptada

Star Strider
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)
See the documentation on contourf (link) for details on how to customise it.
  2 comentarios
wadah mahmoud
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
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)

Iniciar sesión para comentar.

Más respuestas (1)

jonas
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
youssef aider
youssef aider el 25 de Mzo. de 2019
works but, still gives some fluctuations
Daniyal Altaf Baloch
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 .

Iniciar sesión para comentar.

Categorías

Más información sobre Contour Plots en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by