MATLAB coneplot in MATLAB®

Learn how to make 1 coneplot charts in MATLAB, then publish them to the Web with Plotly.


3-D Cone Plot

Plot velocity vector cones for vector volume data representing motion of air through a rectangular region of space.

Load the data. The wind data set contains the arrays u, v, and w that specify the vector components and the arrays x, y, and z that specify the coordinates.

load wind

Establish the range of the data to place the slice planes and to specify where you want the cone plots.

xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:)); ymax = max(y(:)); zmin = min(z(:));

Define where to plot the cones. Select the full range in x and y and select the range 3 to 15 in z.

xrange = linspace(xmin,xmax,8); yrange = linspace(ymin,ymax,8); zrange = 3:4:15; [cx,cy,cz] = meshgrid(xrange,yrange,zrange);

Plot the cones and set the scale factor to 5 to make the cones larger than the default size.

figure
hcone = coneplot(x,y,z,u,v,w,cx,cy,cz,5);


fig2plotly('TreatAs', 'coneplot')

Set the cone colors.

hcone.FaceColor = 'red';
hcone.EdgeColor = 'none';


fig2plotly('TreatAs', 'coneplot')

Calculate the magnitude of the vector field (which represents wind speed) to generate scalar data for the slice command.

hold on wind_speed = sqrt(u.^2 + v.^2 + w.^2);

Create slice planes along the x-axis at xmin and xmax, along the y-axis at ymax, and along the z-axis at zmin. Specify interpolated face color so the slice coloring indicates wind speed, and do not draw edges.

hsurfaces = slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin); set(hsurfaces,'FaceColor','interp','EdgeColor','none') hold off

Change the axes view and set the data aspect ratio.

view(30,40)
daspect([2,2,1])


fig2plotly('TreatAs', 'coneplot')

Add a light source to the right of the camera and use Gouraud lighting to give the cones and slice planes a smooth, three-dimensional appearance.

camlight right
lighting gouraud
set(hsurfaces,'AmbientStrength',0.6)
hcone.DiffuseStrength = 0.8;


fig2plotly('TreatAs', 'coneplot')