Vorrei creare un Argand Diagram da un insieme di numeri complessi usando matplotlib.Come stampare numeri complessi (Diagramma Argand) usando matplotlib
Esistono funzioni preconfigurate per aiutarmi a farlo?
Qualcuno può consigliare un approccio?
Vorrei creare un Argand Diagram da un insieme di numeri complessi usando matplotlib.Come stampare numeri complessi (Diagramma Argand) usando matplotlib
Esistono funzioni preconfigurate per aiutarmi a farlo?
Qualcuno può consigliare un approccio?
Non sono sicuro di cosa stai cercando qui ... hai una serie di numeri complessi e vuoi mapparli al piano usando la loro parte reale come coordinata x e la parte immaginaria come ?
In questo modo è possibile ottenere la parte reale di qualsiasi numero immaginario di python con number.real
e la parte immaginaria con number.imag
. Se usi numpy, fornisce anche un insieme di funzioni di aiuto numpy.real e numpy.imag ecc. Che funzionano su array numpy.
Così, per esempio, se si ha avuto una serie di numeri complessi memorizzati o meno così:
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])
... si può solo fare
In [15]: fig,ax = subplots()
In [16]: ax.scatter(a.real,a.imag)
Questo trame punti su un diagramma di Argand per ogni punto.
modifica: Per la parte di stampa, è necessario aver importato matplotlib.pyplot tramite from matplotlib.pyplot import *
o (come ho fatto io) utilizzare la shell ipython in modalità pylab.
Per seguire la risposta di @ inclemento; la seguente funzione produce un diagramma di argand centrato attorno a 0,0 e ridimensionato al massimo valore assoluto nell'insieme di numeri complessi.
Ho usato la funzione di tracciamento e le linee continue specificate da (0,0). Questi possono essere rimossi sostituendo ro-
con ro
.
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()
Ad esempio:
>>> a = n.arange(5) + 1j*n.arange(6,11)
>>> from argand import argand
>>> argand(a)
produce:
EDIT:
ho appena capito c'è anche una funzione polar
trama:
for x in a:
plt.polar([0,angle(x)],[0,abs(x)],marker='o')
cercare di evitare '' import *: è molto più leggibile e meno confusione se non si importano nello spazio di nome attuale e fare qualcosa di simile 'importazione matplotlib.pyplot come plt' e poi' plt.'. Inoltre, questo ti evita possibili scontri sul nome –