mathplotlib imshow Komplexes 2D-array
Ist es eine gute Art und Weise, wie plot-2D-array von komplexen zahlen, die als Bild in mathplotlib ?
Macht es sehr viel Sinn, Karte Betrag des komplexen Nummer wie "Helligkeit" oder "Sättigung" und die phase als "Farbton" ( wie auch immer der Farbton ist nichts anderes, als die phase in RGB-Farbraum).
http://en.wikipedia.org/wiki/HSL_and_HSV
Aber soweit ich weiß, imshow akzeptiert nur Skalare Werte, die dann abgebildet mit einigen colorscale. Es gibt nichts wie ploting echten RGB-Bildern?
Ich glaube es wäre einfach nur implementieren Sie eine version, die akzeptiert 2D-array von Tupeln (Vektoren) von 3 floating-point-zahlen oder ndarray der Schwimmer von der Form [:,:,3]. Ich denke, das wäre in der Regel usefful Funktion. Es wäre auch nützlich für das zeichnen echte RGB-colord Bilder, wie Texturen ausgegeben, die von OpenCL
- Finden Sie diese Antwort für eine andere Frage: stackoverflow.com/a/17113417/907575
Du musst angemeldet sein, um einen Kommentar abzugeben.
diese hat fast die gleichen von @Süchtig-code, aber sehr viel schneller.
Die Bibliothek
mpmath
verwendetmatplotlib
zu produzieren die schönen Bilder der komplexen Ebene. Auf der komplexen Ebene, die Sie in der Regel über die Pflege der Stöcke, so das argument der Funktion gibt die Farbe (also Stangen, wird eine Spirale). Regionen von extrem großen oder kleinen Werten gesteuert werden, indem die Sättigung an. Aus den docs:Beispiel:
Weiteres Beispiel zeigt die zeta-Funktion, die trivialen Nullstellen und die kritische Streifen:
Anpassung der Plot-code aus
mpmath
Plotten kann ein numpy-array , auch wenn Sie nicht bekannt die ursprüngliche Funktion mit numpy und matplotlib. Wenn Sie wissen, dass die Funktion, siehe meine ursprüngliche Antwort mitmpmath.cplot
.Von hier aus können Sie zeichnen eine beliebige komplexe numpy-array:
hls_to_rgb
die Sie könnte wahrscheinlich zu Vektorisieren. Sie können es viel schneller durch ändern der Anzahl der PunkteN
, die Geschwindigkeit sollte proportional zu N^2.Können Sie
matplotlib.colors.hsv_to_rgb
stattcolorsys.hls_to_rgb
. Diematplotlib
Funktion ist etwa 10 mal schneller! Sehen die Ergebnisse unter:hier ist die Methode abgeholt Antwort von @nadapez:
Prüfung der Ergebnisse aus den beiden Verfahren mit 1024*1024 2darray:
Dieses Ergebnis auf meinem alten laptop: