for x in a:
plt.polar([0,angle(x)],[0,abs(x)],marker='o')
另一答案
for x in a:
plt.polar([0,angle(x)],[0,abs(x)],marker='o')
另一答案
如果您喜欢下面的情节
以上是关于如何使用matplotlib绘制复数(Argand图)的主要内容,如果未能解决你的问题,请参考以下文章
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用matplotlib绘制复数(Argand图)相关的知识,希望对你有一定的参考价值。
我想使用matplotlib从一组复数创建一个Argand Diagram。
有没有内置的函数可以帮助我做到这一点?
任何人都可以推荐一种方法吗?
我不确定您在这里究竟要什么...您有一组复数,想通过将它们的实部用作x坐标并将虚部用作y来将它们映射到平面?
如果是这样,您可以使用number.real
获得任何python虚数的实部,并使用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])
...您可以做
In [15]: fig,ax = subplots()
In [16]: ax.scatter(a.real,a.imag)
这将在每个点的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()
例如:
>>> a = n.arange(5) + 1j*n.arange(6,11)
>>> from argand import argand
>>> argand(a)
产生:“>
编辑:
我刚刚意识到也有一个polar
绘图功能:
polar
“ >>
for x in a:
plt.polar([0,angle(x)],[0,abs(x)],marker='o')
for x in a:
plt.polar([0,angle(x)],[0,abs(x)],marker='o')
如果您喜欢下面的情节
以上是关于如何使用matplotlib绘制复数(Argand图)的主要内容,如果未能解决你的问题,请参考以下文章