1

プロジェクトのディスク上のポイントのランダムな位置をマッピングするプログラムを Python で作成しました。ポイントの数が異なると、ランダムな位置が png として保存され、後で使用できるようになります。コードは次のとおりです。

def randr():#random r position
  return random.random()

def randphi():#random phi position
  return 2*pi*random.random()

nrange=[3,10,11,12,15,20,25,30]

for N in nrange:
   rposition=[]#create a table of r positions
   phiposition=[]#create a table of phi positions
   rinverse=[]#create a table of 1/rij

   for listcreation in range(0,N,1):#go through each charge
      rposition.append(randr())#allocate a random r position
      phiposition.append(randphi())#allocate a random phi position

   name=N
   filename = "c:/users/V/%i.png" % name
   pyplot.polar(phiposition,rposition,marker='o', markersize=10,color='b',
             linestyle='none')
   pyplot.savefig(filename, format='png')

問題は、このコードを実行すると、最初の数字は 3 ポイントで保存されますが、2 番目の数字は 10 ではなく 13 で保存されることです! これは、連続する N について続きます。

画像を投稿することはできないので、私の言葉を信じるか、コードを実行する必要があります。

これを克服する方法を知っている人はいますか?

4

2 に答える 2

0

デフォルトでは、軸はプロット間でクリアされないため、2 番目のプロットをプロットすると、既にプロットされたものに追加されます。クリアするには、通話pyplot.cla()の前に挿入しますpolar

于 2013-04-23T18:57:21.960 に答える
0

同様の状況で、軸を適切に初期化するのが良いことを発見しました

for N in nrange:
    {Make the data}

    ax = py.subplot(111)
    ax.plot({data})
    py.savefig...

これにより、軸が自動的にクリアされ、はっきりと読みやすくなります。も使用py.xlabelする場合は、明確にするためにこれらをax.set_xlabel代わりに変更することをお勧めします。

于 2013-04-23T21:30:26.150 に答える