วิธีกำหนด VectorColorFunction ให้กับเฟส (แทนขนาด) ใน VectorPlot
ฉันต้องการลงจุดเวกเตอร์ 2 มิติโดยกำหนดสีให้กับเฟส / มุมของจุดข้อมูล (แทนที่จะเป็นขนาด) เช่นเดียวกับสีที่ใช้ในComplexPlotฟังก์ชัน อย่างไรก็ตามปริมาณ 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 [] สำหรับรายการเอนทิตี"
ฉันพบแผนที่สี "รุ้ง"
VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Rainbow"][Arg[#3 + I #4]] &)] นี่คือผลลัพธ์:
แต่ "Rainbow" ไม่ใช่ตารางสีแบบวงกลมที่เหมาะสำหรับมุมแสดงผล อย่างไรก็ตามตอนนี้อนุญาตให้แมปสีตามมุม (ฟังก์ชันที่กำหนด) ขั้นตอนต่อไปคือการสร้างตารางสี Hue จริงซึ่งสามารถส่งผ่านไปยัง 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. การดู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) ]& )