How to plot complex numbers (Argand Diagram) using matplotlib How to plot complex numbers (Argand Diagram) using matplotlib python python

How to plot complex numbers (Argand Diagram) using matplotlib


I'm not sure exactly what you're after here...you have a set of complex numbers, and want to map them to the plane by using their real part as the x coordinate and the imaginary part as y?

If so you can get the real part of any python imaginary number with number.real and the imaginary part with number.imag. If you're using numpy, it also provides a set of helper functions numpy.real and numpy.imag etc. which work on numpy arrays.

So for instance if you had an array of complex numbers stored something like this:

In [13]: a = n.arange(5) + 1j*n.arange(6,11)In [14]: aOut[14]: array([ 0. +6.j,  1. +7.j,  2. +8.j,  3. +9.j,  4.+10.j])

...you can just do

In [15]: fig,ax = subplots()In [16]: ax.scatter(a.real,a.imag)

This plots dots on an argand diagram for each point.

edit: For the plotting part, you must of course have imported matplotlib.pyplot via from matplotlib.pyplot import * or (as I did) use the ipython shell in pylab mode.


To follow up @inclement's answer; the following function produces an argand plot that is centred around 0,0 and scaled to the maximum absolute value in the set of complex numbers.

I used the plot function and specified solid lines from (0,0). These can be removed by replacing ro- with 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()

For example:

>>> a = n.arange(5) + 1j*n.arange(6,11)>>> from argand import argand>>> argand(a)

produces:argand function output graph

EDIT:

I have just realised there is also a polar plot function:

for x in a:    plt.polar([0,angle(x)],[0,abs(x)],marker='o')

enter image description here


If you prefer a plot like the one below

one type of plot

or this one second type of plot

you can do this simply by these two lines (as an example for the plots above):

z=[20+10j,15,-10-10j,5+15j] # array of complex valuescomplex_plane2(z,1) # function to be called

by using a simple jupyter code from herehttps://github.com/osnove/other/blob/master/complex_plane.py

I have written it for my own purposes. Even better it it helps to others.