Come assegnare VectorColorFunction alla fase (anziché alla grandezza) in VectorPlot
Vorrei tracciare il vettore 2D assegnando il colore alla fase/angolo dei punti dati (invece della loro grandezza), come quel colore usato in ComplexPlotfunzione. Tuttavia, ComplexPlot dose non ha il VectorMarker che mi piace usare e mostra la grandezza dei punti dati.
Questo è quello che ho ottenuto con
VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> Hue]
Ho anche provato ad assegnare VectorColorFunction -> ArcTan[y/x]ma questo non funziona.
==========Emendamento dopo i suggerimenti di @mikuszefski ==============
Ho modificato il codice inVectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Hue"][Arg[#3 + I #4]] &)]
Tuttavia, un messaggio di errore mostra "ColorData::notent: Hue non è un'entità, una classe o un tag noto per ColorData. Usa ColorData[] per un elenco di entità."
Ho trovato una mappa dei colori disponibile "Arcobaleno"
VectorPlot[{x, y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "CircleArrow", VectorColorFunction -> (ColorData["Rainbow"][Arg[#3 + I #4]] &)]Ecco il risultato:
Ma "Rainbow" non è una tabella di colori ciclica adatta agli angoli di visualizzazione. Ad ogni modo, ora permetteva di mappare il colore in base agli angoli (una funzione definita). Il prossimo passo è generare una vera tabella di colori Hue che può essere passata a ColorData, immagino.
Risposte
Guardando i documenti di VectorColorFunctionte probabilmente hai bisogno di qualcosa del genere
VectorColorFunction -> (ColorData["Rainbow", (Pi + Arg[#3 + I #4])/ (2 Pi) ]&)
VectorPlotautomaticamente passa 5 argomenti, che dovrebbero essere x, y, vx, vye cioè la rnorma. quindi puoi facilmente ottenere l'angolo creando un numero complesso dalle componenti del vettore, cioè argomento 3 e 4. Quindi, devi fornire la funzione pura corrispondente. Contrariamente all'esempio nei documenti, qui ridimensiono manualmente.
Info... Non ho Mathematica a portata di mano in questo momento, quindi non ho potuto testare la risposta.
Aggiornare
Sembra che Huenon sia valido con ColorData, quindi ho modificato il codice precedente in Rainbow. Guardando i ColorFunctiondocumenti per ottenerlo Hueprobabilmente dovresti leggere
VectorColorFunction -> Function[ { x, y, v, w, r }, Hue[ (Pi + Arg[ v + I w ]) / (2 Pi) ] ]
che dovrebbe essere equivalente a
VectorColorFunction -> ( Hue[ (Pi + Arg[ #3 + I #4 ] ) / (2 Pi) ]& )