Search code examples
matlabplot3ddata-visualizationgeometry-surface

Matlab Ploting with different color for iso-surface


I was trying use the code shown below to plot in such a way that each iso-surface will be different in color and there will be a color bar at the right. I made a ss(k) color matrix for different colors. Number of iso-surfaces is 10 but I have only 8 colors. That's why I wrote ss(9)='r' and ss(10)='r'.

I need a solution to plot the iso-surface with different color and bar at the right side.

ss=['y','m','c','r','g','b','w','k','r','r']
k=1;
for i=.1:.1:1
 p=patch(isosurface(x,y,z,v,i));
 isonormals(x,y,z,v,p)
 hold on;

 set(p,'FaceColor',ss(k),'EdgeColor','none');
 daspect([1,1,1])
 view(3); axis tight
 camlight 
 lighting gouraud
 k=k+1;
end

enter image description here


Solution

  • Matlab usually plots different iso-surfaces in different colors automatically, so you don't need to care about that. What kind of bar do you need? A colorbar or a legend? Either way, it is just to use the colorbar or legend function..

    %Create some nice data
    [x y z] = meshgrid(1:5,1:5,1:5); 
    v = ones(5,5,5);
    for i=1:5
       v(:,:,i)=i;
    end
    v(1:5,3:5,2)=1
    v(1:5,4:5,3)=2
    
    %Plot data
    for i=1:5
    isosurface(x,y,z,v,i)
    end
    
    %Add legend and/or colorbar
    legend('one','Two','Three','Four')
    colorbar
    

    Image