Wolfram mathematica 如何在VectorPlot中将VectorColorFunction指定给相位(而不是幅值)

Wolfram mathematica 如何在VectorPlot中将VectorColorFunction指定给相位(而不是幅值),wolfram-mathematica,2d-vector,Wolfram Mathematica,2d Vector,我想通过将颜色指定给数据点的相位/角度(而不是它们的大小)来绘制2D向量,就像ComplexPlot函数中使用的颜色一样。然而,ComplexPlot没有我喜欢使用的矢量标记器,也没有显示数据点的大小 这就是我得到的 VectorPlot[{x,y},{x,-3,3},{y,-3,3},矢量标记器->“CircleArrow”,VectorColorFunction->色调] 我还尝试分配VectorColorFunction->ArcTan[y/x],但这不起作用 =========根据@m

我想通过将颜色指定给数据点的相位/角度(而不是它们的大小)来绘制2D向量,就像
ComplexPlot
函数中使用的颜色一样。然而,ComplexPlot没有我喜欢使用的矢量标记器,也没有显示数据点的大小

这就是我得到的

VectorPlot[{x,y},{x,-3,3},{y,-3,3},矢量标记器->“CircleArrow”,VectorColorFunction->色调]

我还尝试分配
VectorColorFunction->ArcTan[y/x]
,但这不起作用

=========根据@mikuszefski的建议进行修改==============

我将代码修改为
VectorPlot[{x,y},{x,-3,3},{y,-3,3},向量标记器->“CircleArrow”,向量颜色函数->(颜色数据[“色调”][Arg[#3+I#4]]&)]

但是,错误消息显示“ColorData::notent:Hue不是ColorData的已知实体、类或标记。请使用ColorData[]查看实体列表。”

我找到了一张可用的彩色地图“彩虹”

VectorPlot[{x,y},{x,-3,3},{y,-3,3},矢量标记器->“CircleArrow”,VectorColorFunction->(ColorData[“Rainbow”][Arg[#3+I#4]]和)]
结果如下:


但“彩虹”并不是适合显示角度的循环色表。无论如何,它现在允许根据角度映射颜色(定义的函数)。下一步是生成一个真正的色调颜色表,我想它可以传递给ColorData。

查看
VectorColorFunction
的文档,您可能需要类似的东西

VectorColorFunction -> (ColorData["Rainbow", (Pi + Arg[#3 + I #4])/ (2 Pi) ]&)
VectorPlot
自动传递5个参数,它们应该是
x
y
vx
vy
r
,即标准。因此,你可以很容易地得到角度,从向量分量中产生一个复数,即参数3和4。因此,您必须提供相应的纯函数。与文档中的示例不同,这里我手动重新缩放

信息。。。我现在手头没有Mathematica,所以我无法测试答案

更新

似乎
Hue
ColorData
无效,因此我将上述代码更改为
Rainbow
。查看要获得
色调的

VectorColorFunction -> Function[ { x, y, v, w, r }, Hue[ (Pi + Arg[ v + I w ]) / (2 Pi) ] ]
这应该相当于

VectorColorFunction -> ( Hue[ (Pi + Arg[ #3 + I #4 ] ) / (2 Pi) ]& )

谢谢你的评论。就在那一行。作为一个初学者,我还没有完全理解如何为参数定义不同的函数。但是,您提供的示例代码导致错误消息“ColorData::notent:色调不是ColorData的已知实体、类或标记。请使用ColorData[]查看实体列表。”看起来“色调”不是ColorData固有的颜色表,最接近的颜色表是“Rainbow”,但是,Rainbow不是循环的,这不适用于显示角度。必须生成一个“色调”颜色表才能与ColorData兼容。@w4m好的……如前所述,我的问题是我没有Mathematica进行测试,但如果我从Mathematica的旧版本中记错了,它可能会直接这样工作:
VectorColorFunction->(色调[(Pi+Arg[#3+I#4])/(2Pi I)]&
。。。你能查一下吗?