Plotting contours of Z on an x-y axis where Z is not a function of x or y
21 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Aquatris
on 4 Jan 2019
Edited: Aquatris
on 7 Jan 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 Comments
More Answers (2)
Walter Roberson
on 2 Jul 2020
You should probably be using scatteredInterpolant() or griddedInterpolant().
3 Comments
Walter Roberson
on 2 Jul 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.
Vidya shree V
on 24 Sep 2020
I have R Z T value how to plot contour graph in matlab
4 Comments
Rita Douaihy
on 25 Oct 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
on 25 Oct 2021
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/369253/plotSecond.xlsx';
T = readmatrix(filename);
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');
See Also
Categories
Find more on Contour Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!