Re: VectorColorFunction
- To: mathgroup at smc.vnet.net
- Subject: [mg124478] Re: VectorColorFunction
- From: Dan <dflatin at rcn.com>
- Date: Sat, 21 Jan 2012 05:14:32 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jfb3dr$hu0$1@smc.vnet.net>
On Jan 20, 2:00 am, Peter Rodenbach <peter.rodenb... at googlemail.com>
wrote:
> Hi experts,
>
> I want to plot via ListVectorPlot a Field of Vectors. I obtained the
> vectors from a physics experiment. The Norm of all vectors is very
> similar, and what is important is its direction!
>
> Therefore, what I want to do now is: give each vector a color with a
> different direction a different color, e.g., up to 0.5degree red, 0.5
> to 1 degree yellow, etc.
>
> The Problem: The norm of each vector is used as argument for the
> function that determines the color, according to the help
>
> "With the setting VectorColorFunction->func, the arguments supplied to
> func are as follows" ,...., x,y,Subscript[v, x],Subscript[v,
> y],Norm[{Subscript[v, x],Subscript[v, y]}]"
>
> Does anyone have an idea for a workaround?
>
> Thanks
>
> Peter
One solution is to take the output of ListVectorPlot and with a
ReplaceAll and a Rule prepend each Arrow with a color, e.g.
directionHue[{p1_,p2_}]:=Hue[Rescale[ArcTan@@(p2-p1),{-\[Pi],\[Pi]}]];
data=Table[{Sin[x],Cos[y]},{x,-2,2,0.1},{y,-2,2,0.1}];
ListVectorPlot[data]/.Arrow[pts_]->{directionHue@pts,Arrow@pts}
Here I have a continous color function based on direction. It can be
easily modified to return one of a discrete set of colors based on
angle range.
-- Dan