File Exchange

image thumbnail

2D Vector Field Visualization

version (3.15 KB) by Nicholas Howe
Two functions that create visualizations of 2D vector fields


Updated 22 Nov 2010

View License

The files in this package comprise two Matlab functions that create
visualizations of 2D vector fields.

cquiver renders a vector field as a grid of unit-length arrows. The arrow direction indicates vector field direction, and the color indicates the magnitude. Color is taken from the current colormap.

vfcolor renders a vector field as a grid of colors. Hue indicates the field direction, and saturation indicates the magnitude. The current implementation uses a fixed color coding.

Cite As

Nicholas Howe (2020). 2D Vector Field Visualization (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (6)


cquiver works fine.

vfcolor fails.

Subscript indices must either be real positive
integers or logicals.

Error in vfcolor (line 64)
img1(:) = c(h1,1,:);

As implemented, cquiver and vfcolor can only display a rectangular grid of vectors. Thus the quiver functionality you are looking for is not available. Sorry! I'll consider whether it can be added in a future version.


Dear Nicholas,
I have a problem with using cquiver and vfcolor. I have a map of vectors that I normally display with quiver by giving it as an imput the x and y position of each vector and the x and y components (say quiver(xcoord, ycoord, xcomp, comp)). Rather then the standard quiver plot, I wish to colorcode this map of vectors. What should I give as an input to vfcolor or cquiver?


it works, thank you :)

I guess it's confusing that the usage for cquiver is slightly different from quiver. Sorry about that!

If I understand your example properly, `of` represents the optical flow you wish to display as a 2D array of complex numbers. In that case you should be able to call cquiver like this:



can you give me an working example of the cquiver() function? i don't know how to handle the input arguments.

formally I used Matlabs quiver() function like this:

%read a single frame of a Video file

im = step(hVideoSrc);

%create a rectangular grid

[X Y] = meshgrid(1:1:size(im, 2), 1:1:size(im, 1));

% compute optical flow for the video
%Horizontal and vertical components in %complex form

of = step(hof,im);

%plot a 2-d vector Field


This returns a Quiver Plot of the Optical flow between two frames of the Video.
But when I replace the quiver() function With the cquiver function it just returns me the Colorbar, and nothing else.

MATLAB Release Compatibility
Created with R2010a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired by: ncquiverref