VectorPlot의 위상 (크기 대신)에 VectorColorFunction을 할당하는 방법

Aug 25 2020

ComplexPlot함수에 사용되는 색상과 같이 데이터 포인트의 위상 / 각도 (크기 대신)에 색상을 할당하여 2D 벡터를 플로팅하고 싶습니다 . 그러나 ComplexPlot에는 내가 사용하고 싶은 VectorMarker가 없으며 데이터 포인트의 크기를 보여줍니다.

이것은 내가 가진 것입니다

VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> Hue]

나는 또한 할당을 시도했지만 VectorColorFunction -> ArcTan[y/x]작동하지 않습니다.

========== @mikuszefski 제안 후 수정 =============

코드를 다음과 같이 수정했습니다. VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Hue"][Arg[#3 + I #4]] &)]

그러나 "ColorData :: notent : Hue는 ColorData에 대해 알려진 엔티티, 클래스 또는 태그가 아닙니다. 엔티티 목록에 ColorData []를 사용하십시오."라는 오류 메시지가 표시됩니다.

사용 가능한 색상 맵 "Rainbow"를 찾았습니다.

VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Rainbow"][Arg[#3 + I #4]] &)] 결과는 다음과 같습니다.

그러나 "Rainbow"는 디스플레이 각도에 적합한 순환 색상 표가 아닙니다. 어쨌든 이제 각도 (정의 된 함수)에 따라 색상을 매핑 할 수 있습니다. 다음 단계는 ColorData에 전달할 수있는 실제 Hue 색상 표를 생성하는 것입니다.

답변

2 mikuszefski Aug 25 2020 at 18:21

VectorColorFunction당신 의 문서를 보면 아마도 그런 것이 필요할 것입니다.

VectorColorFunction -> (ColorData["Rainbow", (Pi + Arg[#3 + I #4])/ (2 Pi) ]&)

VectorPlot자동으로해야한다 (5 개) 인수를 전달 x, y, vx, vyr, 즉 규범. 따라서 벡터 구성 요소, 즉 인수 3과 4에서 복소수를 만드는 각도를 쉽게 얻을 수 있습니다. 따라서 적절한 순수 함수를 제공해야합니다. 문서의 예제와 달리 여기서는 수동으로 크기를 조정합니다.

정보 ... 지금은 Mathematica 가 없어서 답을 테스트 할 수 없었습니다.

최신 정보

에서 Hue유효하지 않은 것 같아서 ColorData위의 코드를 Rainbow. 그것을 얻기 위해 ColorFunction문서 를 보면 Hue아마도 읽어야 할 것입니다.

VectorColorFunction -> Function[ { x, y, v, w, r }, Hue[ (Pi + Arg[ v + I w ]) / (2 Pi) ] ]

다음과 같아야합니다.

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