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.
    7 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Rafael Freire
      
 il 18 Ott 2019
  
    
    
    
    
    Modificato: Rafael Freire
      
 il 21 Ott 2019
            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
Risposta accettata
  Akira Agata
    
      
 il 21 Ott 2019
        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 Commenti
Più risposte (1)
  Akira Agata
    
      
 il 19 Ott 2019
        How about simply using scatter3 function, like:
load('object.mat')
figure
scatter3(x,y,z,[],c,'.')
colorbar

Vedere anche
Categorie
				Scopri di più su Surface and Mesh 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!
