# Using ListVectorPlot[ ] and eliminating vectors at points where there shouldn't be any

I am trying to make a plot displaying the following type of information. I have a finite set of 2D-coordinates. For each coordinate point, I have a 2D vector associated to that point. The vector is actually normalized at each point as well. What I would like is to plot the vector-field.

I am currently using:

ListVectorPlot[]


My data is formatted:

c={{x1,y1},{x2,y2}....,{xn,yn}}


Such that when I plot c with something like below, the output is:

ListPlot[c]


My vector field is:

v={{a1,b1},{a2,b2},....,{an,bn}}


Doing:

ListVectorPlot[Transpose[{c,v}]


I get:

Clearly, the vector field should only be plotted in the annulus, what is Mathematica doing here that there are vectors plotted in the inner region, as well as the outer regions past radius=1? Is this an extrapolation or something?

Also is there a way to show more of the vector field? More arrows? (Lines how I've shown it)

Also, does ListVectorPlot[] plot the center of a displayed vector directly above the coordinate point?

• Again, ... Welcome to Mathematica.SE! I suggest the following: 1) As you receive help, try to give it too, by answering questions in your area of expertise. 2) Read the faq! 3) When you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge. Also, please remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign! – Dr. belisarius Dec 4 '14 at 23:24

Restrict the points using VectorPoints.

Clear[myPoints, myVectors];

myPoints =
Take[Select[
RandomVariate[
UniformDistribution[{{-1, 1}, {-1, 1}}], {1000}], .3 < Norm[#] < 1. &], 500];

myVectors =
Table[{Cos[\[Theta] = RandomReal[{0, 2 \[Pi]}]],
Sin[\[Theta]]}, {Length[myPoints]}];

ListVectorPlot[
Transpose[{myPoints, myVectors}],
VectorPoints -> myPoints
]