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

25 views (last 30 days)
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?

Accepted Answer

Aquatris
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)

More Answers (2)

Walter Roberson
Walter Roberson on 2 Jul 2020
You should probably be using scatteredInterpolant() or griddedInterpolant().
  3 Comments
Walter Roberson
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.

Sign in to comment.


Vidya shree V
Vidya shree V on 24 Sep 2020
I have R Z T value how to plot contour graph in matlab
  4 Comments
Rita Douaihy
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
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');

Sign in to comment.

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!