Wolfram mathematica 如何在VectorPlot中将VectorColorFunction指定给相位(而不是幅值)
我想通过将颜色指定给数据点的相位/角度(而不是它们的大小)来绘制2D向量,就像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
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)]&
。。。你能查一下吗?