Ich möchte eine Argand Diagram aus einer Reihe von komplexen Zahlen mit Matplotlib erstellen.Wie komplexe Zahlen (Argand-Diagramm) mit Matplotlib plotten
Gibt es vordefinierte Funktionen, die mir dabei helfen?
Kann jemand einen Ansatz empfehlen?
Ich möchte eine Argand Diagram aus einer Reihe von komplexen Zahlen mit Matplotlib erstellen.Wie komplexe Zahlen (Argand-Diagramm) mit Matplotlib plotten
Gibt es vordefinierte Funktionen, die mir dabei helfen?
Kann jemand einen Ansatz empfehlen?
Ich bin mir nicht sicher, was genau Sie hier suchen ... Sie haben eine Menge komplexer Zahlen und wollen sie der Ebene zuordnen, indem Sie ihren realen Teil als x-Koordinate und den imaginären Teil als y verwenden ?
Wenn ja, können Sie den realen Teil einer beliebigen Python-imaginären Nummer mit number.real
und den imaginären Teil mit number.imag
bekommen. Wenn Sie numpy verwenden, bietet es auch eine Reihe von Hilfsfunktionen numpy.real und numpy.imag usw., die auf numpy Arrays funktionieren.
So zum Beispiel, wenn Sie eine Reihe von komplexen Zahlen haben etwas wie folgt gespeichert:
In [13]: a = n.arange(5) + 1j*n.arange(6,11)
In [14]: a
Out[14]: array([ 0. +6.j, 1. +7.j, 2. +8.j, 3. +9.j, 4.+10.j])
... Sie nur
tun könnenIn [15]: fig,ax = subplots()
In [16]: ax.scatter(a.real,a.imag)
Dies zeichnet Punkte auf einem argand Diagramm für jeden Punkt.
edit: Für den Plotteil müssen Sie natürlich matplotlib.pyplot über from matplotlib.pyplot import *
importiert haben oder (wie ich es getan habe) die ipython-Shell im pylab-Modus verwenden.
Um zu folgen @ inclemens Antwort; Die folgende Funktion erzeugt ein Argand-Diagramm, das um 0,0 zentriert ist und auf den maximalen absoluten Wert in der Menge der komplexen Zahlen skaliert wird.
Ich verwendete die Plot-Funktion und spezifizierte durchgezogene Linien von (0,0). Diese können entfernt werden, indem ro-
durch ro
ersetzt wird.
def argand(a):
import matplotlib.pyplot as plt
import numpy as np
for x in range(len(a)):
plt.plot([0,a[x].real],[0,a[x].imag],'ro-',label='python')
limit=np.max(np.ceil(np.absolute(a))) # set limits for axis
plt.xlim((-limit,limit))
plt.ylim((-limit,limit))
plt.ylabel('Imaginary')
plt.xlabel('Real')
plt.show()
Zum Beispiel:
>>> a = n.arange(5) + 1j*n.arange(6,11)
>>> from argand import argand
>>> argand(a)
produziert:
EDIT:
Ich habe gerade realisiert gibt es auch eine polar
Plotfunktion:
Versuchen zu vermeiden 'import *': es ist viel besser lesbar und weniger verwirrend, wenn Sie im aktuellen Namensraum nicht importieren und so etwas wie 'Import matplotlib.pyplot als plt' und dann' plt.'. Außerdem vermeidet dies mögliche Namenskonflikte –