3D plot on given X,Y coordinates
14 views (last 30 days)
Show older comments
I got X and Y coordinates of a 2D surface. On this coordinates, I need to put data in it and the data is a vector. I want to see the data I gave for every element of the vector, so it should be 3D plotting. Mesh plotting does not help, since z should not be a vector. Note : The data is not corrolated with X and Y.
% code
x = 30;
>> y = 40;
>> [xx,yy] = meshgrid(x,y);
>> zz = InterpolatedTheta %The data I'm using; 1x832 double.
mesh(xx,yy,zz);
surf(xx,yy,zz);
zz =
end
4 Comments
Answers (2)
jonas
on 2 May 2018
Edited: jonas
on 2 May 2018
There are a number of issues with your code, such as wrong type of input for meshgrid and surf.
Assuming that you have three vectors XYZ of equal size (1x832) and you want to plot the scattered data as a surf, the surf function does not support this type of input as Z must be defined on a grid. One way is to solve this is to interpolate your data on a rectangular grid using interp2 and meshgrid. A simpler way is to use something like the non-default function surf_from_scatter (link), which supports XYZ vectors. Or you can just use these two lines of code, which I took directly from the referenced function:
tri = delaunay(x,y);
h = trisurf(tri, x, y, z);
This is of course assuming that you have scattered data, which should have been clear from your question.
0 Comments
Shivam Anand
on 11 May 2022
x=[32 20 67 1 98 34 57 65 24 82 47 55 8 51 13 14 18 30 37 39 10 33 21 26 38 81 83 60 95 22 17 5 72 46 99 52 12 25 96 29 70 85 43 69 19 78 97 31 89 53 2 91 48 71 61 15 36 84 94 50 11 80 6 7 49 74 9 88 40 79 27 68 73 64 63 59 86 23 35 58 45 28 100 42 93 87 16 90 41 66 54 92 77 4 62 76 75 56 3 44];
y=[96 75 24 9 83 49 27 77 3 23 17 31 40 13 7 52 51 21 98 47 64 79 78 91 44 16 15 100 84 99 63 68 70 30 54 76 97 73 33 5 88 8 71 66 62 25 60 42 72 45 18 11 28 59 89 65 10 55 69 81 12 26 20 95 87 41 74 50 93 22 43 90 14 34 82 35 56 38 80 32 1 57 6 36 37 61 29 58 2 48 4 46 67 53 92 86 94 19 39 85];
z=[55 31 11 45 83 36 86 49 15 57 42 46 8 94 88 47 54 81 98 41 32 35 56 85 9 89 37 60 23 62 67 100 78 76 73 80 10 20 68 34 77 93 1 63 53 12 22 99 91 40 84 24 33 3 43 19 92 97 6 82 64 25 26 79 95 4 44 58 5 21 70 29 65 87 96 90 51 14 18 2 72 28 71 39 52 7 27 59 50 61 48 30 66 69 17 13 74 16 75 38];
xlin = linspace(min(x), max(x), 100);
ylin = linspace(min(y), max(y), 100);
[X,Y] = meshgrid(xlin, ylin);
% Z = griddata(x,y,z,X,Y,'natural');
% Z = griddata(x,y,z,X,Y,'cubic');
Z = griddata(x,y,z,X,Y,'v4');
mesh(X,Y,Z)
axis tight; hold on
plot3(x,y,z,'.','MarkerSize',15)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/994570/image.png)
0 Comments
See Also
Categories
Find more on Surface and Mesh 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!