ato*_*3ls 15 python plot numpy matplotlib complex-numbers
我想使用matplotlib从一组复数中创建一个Argand Diagram.
是否有任何预先构建的功能可以帮助我做到这一点?
有人可以推荐一种方法吗?
inc*_*ent 17
我不确定你在这之后到底是什么...你有一组复数,并希望通过使用它们的实部作为x坐标和虚部作为y将它们映射到平面?
如果是这样,你可以得到任何python虚数的真实部分number.real和虚部number.imag.如果你正在使用numpy,它还提供了一组辅助函数numpy.real和numpy.imag等,它们可以在numpy数组上运行.
因此,例如,如果你有一个复数的数组存储像这样:
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])
Run Code Online (Sandbox Code Playgroud)
......你可以这样做
In [15]: fig,ax = subplots()
In [16]: ax.scatter(a.real,a.imag)
Run Code Online (Sandbox Code Playgroud)
这会在每个点的argand图上绘制点.
编辑:对于绘图部分,您当然必须通过from matplotlib.pyplot import *或(如我所做)导入matplotlib.pyplot 在pylab模式下使用ipython shell.
跟进@ inclement的答案; 以下函数生成一个以0,0为中心的argand图,并缩放到复数组中的最大绝对值.
我使用了绘图函数并指定了(0,0)中的实线.这些可以通过更换被移除ro-用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()
Run Code Online (Sandbox Code Playgroud)
例如:
>>> a = n.arange(5) + 1j*n.arange(6,11)
>>> from argand import argand
>>> argand(a)
Run Code Online (Sandbox Code Playgroud)
生产:

编辑:
我刚刚意识到还有一个polar情节函数:
for x in a:
plt.polar([0,angle(x)],[0,abs(x)],marker='o')
Run Code Online (Sandbox Code Playgroud)
