Cách gán VectorColorFunction thành pha (thay vì độ lớn) trong VectorPlot
Tôi muốn vẽ vector 2D bằng cách gán màu cho pha / góc của các điểm dữ liệu (thay vì độ lớn của chúng), giống như màu được sử dụng trong ComplexPlotchức năng. Tuy nhiên, liều ComplexPlot không có VectorMarker mà tôi thích sử dụng và hiển thị độ lớn của điểm dữ liệu.
Đây là những gì tôi có với
VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> Hue]
Tôi cũng đã cố gắng để chỉ định VectorColorFunction -> ArcTan[y/x]nhưng điều này không hoạt động.
========== Sửa đổi sau đề xuất của @mikuszefski ==============
Tôi đã sửa đổi mã thành VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Hue"][Arg[#3 + I #4]] &)]
Tuy nhiên, một thông báo lỗi hiển thị "ColorData :: notent: Hue không phải là một thực thể, lớp hoặc thẻ đã biết cho ColorData. Sử dụng ColorData [] cho danh sách các thực thể."
Tôi đã tìm thấy một bản đồ màu có sẵn "Rainbow"
VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Rainbow"][Arg[#3 + I #4]] &)] Đây là kết quả:
Nhưng "Rainbow" không phải là bảng màu theo chu kỳ phù hợp với các góc hiển thị. Dù sao, bây giờ nó đã cho phép ánh xạ màu theo các góc độ (một chức năng được xác định). Bước tiếp theo là tạo một bảng màu Huế thực có thể được chuyển đến ColorData, tôi đoán vậy.
Trả lời
Nhìn vào Docs chắc các VectorColorFunctionbạn cũng cần một thứ như vậy
VectorColorFunction -> (ColorData["Rainbow", (Pi + Arg[#3 + I #4])/ (2 Pi) ]&)
Các VectorPlottự động qua 5 đối số, mà nên x, y, vx, vyvà rtức là chuyện bình thường. vì vậy bạn có thể dễ dàng nhận được góc tạo ra một số phức từ các thành phần vectơ, tức là đối số 3 và 4. Do đó, bạn phải cung cấp hàm thuần túy theo. Ngược lại với ví dụ trong tài liệu, ở đây tôi bán lại theo cách thủ công.
Thông tin ... Tôi không có Mathematica trong tay ngay bây giờ, vì vậy tôi không thể kiểm tra câu trả lời.
Cập nhật
Có vẻ như điều đó Huekhông hợp lệ với ColorData, vì vậy tôi đã thay đổi mã trên thành Rainbow. Nhìn vào ColorFunctiontài liệu để lấy Huenó có lẽ nên đọc
VectorColorFunction -> Function[ { x, y, v, w, r }, Hue[ (Pi + Arg[ v + I w ]) / (2 Pi) ] ]
mà phải tương đương với
VectorColorFunction -> ( Hue[ (Pi + Arg[ #3 + I #4 ] ) / (2 Pi) ]& )