4d plot in order to create a surface with density from 4 vectors ( coordinates of the dots). X, Y, Z and C is the color.
조회 수: 12 (최근 30일)
이전 댓글 표시
Hi,
I wanto to create a 4d plot, like isosurface. The data is attached. 4 vectors, xyz and color.
The problem is that I only have 4 vectors, XYZ is position in the space which creates the object and c is the color of that point.
I am kind of lost. Maybe I need to use meshgrid but the vectors has 37k points.
Thanks
채택된 답변
Akira Agata
2019년 10월 21일
OK. Then, how about the following?
% Load data
load('object.mat')
% Create meshgrid
[xq, yq, zq] = meshgrid(min(x):5:max(x),min(y):5:max(y),min(z):5:max(z));
% Assign data to the grid point
cq = nan(size(xq));
[~, pos] = ismember([x,y,z],[xq(:),yq(:),zq(:)],'rows');
cq(pos) = c;
% Find boundary points location
k = boundary(x,y,z,1);
% Create isosurface levels and color
N = 8;
color = jet(N);
v = linspace(min(c),max(c),N);
% Visualize the result
figure
hold on
for kk = 1:N
p = patch(isosurface(xq,yq,zq,cq,v(kk)),...
'FaceColor', color(kk,:),...
'EdgeColor', 'none',...
'FaceAlpha', 0.2);
isonormals(xq,yq,zq,cq,p)
end
trisurf(k,x,y,z,...
'Facecolor', 'b',...
'FaceAlpha', 0.1,...
'Edgecolor', 'none')
view(120,30);
camlight('headlight')
lighting gouraud
grid on
댓글 수: 2
추가 답변 (1개)
Akira Agata
2019년 10월 19일
How about simply using scatter3 function, like:
load('object.mat')
figure
scatter3(x,y,z,[],c,'.')
colorbar
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!