Display Streamlines Using Vector Data
Wind Mapping Data
The MATLAB® vector data set called wind
represents air currents
over North America. This example uses a combination of techniques:
Stream lines to trace the wind velocity
Slice planes to show cross-sectional views of the data
Contours on the slice planes to improve the visibility of slice-plane coloring
1. Determine the Range of the Coordinates
Load the data and determine minimum and maximum values to locate the slice planes
and contour plots (load
, min
, max
).
load wind xmin = min(x(:)); xmax = max(x(:)); ymax = max(y(:)); zmin = min(z(:));
2. Add Slice Planes for Visual Context
Calculate the magnitude of the vector field (which represents wind speed) to
generate scalar data for the slice
command. Create slice planes
along the x-axis at xmin
,
100
, and xmax
, along the
y-axis at ymax
, and along the
z-axis at zmin
. Specify interpolated
face coloring so the slice coloring indicates wind speed, and do not draw edges
(sqrt
, slice
, FaceColor
, EdgeColor
).
wind_speed = sqrt(u.^2 + v.^2 + w.^2); hsurfaces = slice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin); set(hsurfaces,'FaceColor','interp','EdgeColor','none') colormap turbo
3. Add Contour Lines to the Slice Planes
Draw light gray contour lines on the slice planes to help quantify the color
mapping (contourslice
, EdgeColor
,
LineWidth
).
hcont = ... contourslice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin); set(hcont,'EdgeColor',[0.7 0.7 0.7],'LineWidth',0.5)
4. Define the Starting Points for Stream Lines
In this example, all stream lines start at an x-axis value of
80 and span the range 20 to 50 in the y-direction and 0 to 15
in the z-direction. Save the handles of the stream lines and
set the line width and color (meshgrid
, streamline
, LineWidth
,
Color
).
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15); hlines = streamline(x,y,z,u,v,w,sx,sy,sz); set(hlines,'LineWidth',2,'Color','r')
5. Define the View
Set up the view, expanding the z-axis to make it easier to
read the graph (view
, daspect
, axis
).
view(3) daspect([2,2,1]) axis tight
See coneplot
for an example of the same
data plotted with cones.