2013-07-03 13 views

答えて

10

ここであなたが何をしているのかわかりません...複素数のセットがあり、実数部をx座標に、虚数部をyとしてプレーンにマップしたい?

もしそうなら、number.realと虚数部のいずれかの実数部分をnumber.imagで得ることができます。 numpyを使用している場合は、numpy配列で機能するnumpy.realとnumpy.imagなどのヘルパ関数のセットも提供します。あなただけ

In [15]: fig,ax = subplots() 

In [16]: ax.scatter(a.real,a.imag) 

これは、それぞれのアルガン図にドットをプロットを行うことができます...

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]) 

だから例えば、あなたがこのような何かを保存複素数の配列を持っていた場合ポイント。

編集:プロットする部分については、もちろんfrom matplotlib.pyplot import *でmatplotlib.pyplotをインポートしたか、またはipylthonシェルをpylabモードで使用している必要があります。

+7

'インポート*'を避けるようにしてください:あなたは、現在の名前空間にインポートしてplt'として輸入matplotlib.pyplot 'のような何かをしていない場合、それははるかに読みやすく、より少ない混乱の' plt。これにより、名前の衝突が回避されます –

4

@ 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) 

は生成します。 argand function output graph

EDIT:

を私はちょうどpolarプロット機能もあり実現しています10

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

enter image description here

関連する問題