# Plotting contours of Z on an x-y axis where Z is not a function of x or y

26 visualizzazioni (ultimi 30 giorni)
JS il 4 Gen 2019
Commentato: Walter Roberson il 25 Ott 2021
Hello,
I have collected data of temperature measurements at certain coordinates in a room. I want to plot these temperature measurements on a contour map, where the X and Y axis are the perimeter (and dimensions) of the room, and the contours of Z are the temperature measurements I have taken. The total size of the room is x=7m, and y=10.6m. I cannot find a way of plotting a contour map where Z is not a function of x or y. The measurements of temperature (Z) at certain x- and y-coordinates in the room are shown below:
Coordinates Temperature
X Y Z
0.2 9.4 17.0
2 9.3 17.85
7 5 17.65
7 5 17.5
Is there a way of plotting this on a 2D contour map, where the values of Z are shown on the contours?
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Aquatris il 4 Gen 2019
Modificato: Aquatris il 7 Gen 2019
You do not have a lot of data so the countour map will not look great. However what you need to do is;
% create data
x = [0.2 2 7 7];
y = [9.4 9.3 5 5];
z = [17 17.85 17.65 17.5];
% create xy axis grid
[X,Y] = meshgrid(x,y);
% create corresponding Z values, assume z = 0 for locations with no z data
Z = zeros(length(x),length(y)) ;
for i = 1:length(x)
for j = 1:length(y)
if i==j % z data exist for only for x(n) y(n) location, n = 1,2,3...
Z(i,j) = z(i);
end
end
end
contourf(X,Y,Z)
##### 2 CommentiMostra NessunoNascondi Nessuno
JS il 5 Gen 2019
Thank you for this! This produces the kind of contour map that I want.
Saurabh Das il 2 Lug 2020
Thanks very much. This was quite helpful!

Accedi per commentare.

### Più risposte (2)

Walter Roberson il 2 Lug 2020
You should probably be using scatteredInterpolant() or griddedInterpolant().
##### 3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Walter Roberson il 2 Lug 2020
x = [0.2 2 7 7];
y = [9.4 9.3 5 5];
z = [17 17.85 17.65 17.5];
N = 100;
xvec = linspace(min(x), max(x), N);
yvec = linspace(min(y), max(y), N);
F = scatteredInterpolant(x(:), y(:), z(:));
[X, Y] = ndgrid(xvec, yvec);
Z = F(X, Y);
surf(X, Y, Z, 'edgecolor', 'none');
Note that your last two X, Y coordinates are the same but different Z: the data will be averaged.
You effectively only have three different points with this data, so the output is a plane.
Saurabh Das il 30 Set 2020
Thanks very much. It was helpful!

Accedi per commentare.

Vidya shree V il 24 Set 2020
I have R Z T value how to plot contour graph in matlab
##### 4 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Rita Douaihy il 25 Ott 2021
Hello did you find an answer to your question ? The above script did not work for me and I have similar case were X,Y and Z values are data in an excel sheet and not related
Walter Roberson il 25 Ott 2021
X = T(2:end,1);
Y = T(1,2:end);
Z = T(2:end,2:end).'; %notice the transpose
surf(X, Y, Z, 'edgecolor', 'none');

Accedi per commentare.

### Categorie

Scopri di più su Contour Plots in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by