VectorPlot'ta VectorColorFunction'ı faza (büyüklük yerine) atama

Aug 25 2020

ComplexPlotFonksiyonda kullanılan renk gibi (büyüklükleri yerine) veri noktalarının fazına / açısına rengi atayarak 2D vektörü çizmek istiyorum . Ancak, ComplexPlot dozu, kullanmak istediğim VectorMarker'a sahip değil ve veri noktalarının büyüklüğünü gösteriyor.

Bu benim sahip olduğum şey

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

Ben de atamaya çalıştım VectorColorFunction -> ArcTan[y/x]ama bu işe yaramıyor.

========== @mikuszefski'nin önerilerinden sonra değişiklik ==============

Kodu şu şekilde değiştirdim VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Hue"][Arg[#3 + I #4]] &)]

Ancak, bir hata mesajı "ColorData :: notent: Hue, ColorData için bilinen bir varlık, sınıf veya etiket değil. Varlık listesi için ColorData [] kullanın."

Kullanılabilir bir "Gökkuşağı" renkli harita buldum

VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Rainbow"][Arg[#3 + I #4]] &)] İşte sonuç:

Ancak "Gökkuşağı", görüntü açılarına uygun döngüsel renk tablosu değildir. Her neyse, artık rengi açılara göre eşlemeye izin verdi (tanımlanmış bir işlev). Bir sonraki adım, sanırım ColorData'ya aktarılabilen gerçek bir Hue renk tablosu oluşturmaktır.

Yanıtlar

2 mikuszefski Aug 25 2020 at 18:21

Dokümanlarınıza VectorColorFunctionbaktığınızda muhtemelen böyle bir şeye ihtiyacınız var

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

VectorPlotOtomatik olarak 5 olmalıdır bağımsız değişkenler, geçer x, y, vx, vyve rörneğin, norm. Böylece, vektör bileşenlerinden karmaşık bir sayı oluşturan açıyı kolayca elde edebilirsiniz, yani 3 ve 4. argüman. Bu nedenle, uygun saf fonksiyonu sağlamanız gerekir. Belgelerdeki örneğin aksine, burada manuel olarak yeniden ölçeklendiriyorum.

Bilgi ... Şu anda Mathematica elimde olmadığı için cevabı test edemedim.

Güncelleme

Görünüşe göre bu Huegeçerli değil ColorData, bu yüzden yukarıdaki kodu olarak değiştirdim Rainbow. Baktığımızda ColorFunctiondocs olsun Huemuhtemelen okumalısınız

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

eşdeğer olmalıdır

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