2013-04-23 41 views
1

我已經用python編寫了一個程序來映射項目光盤上點的隨機位置。這個想法是,對於不同數量的點,隨機位置將被保存爲png供以後使用。代碼如下:保存單獨數字的難度matplotlib

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點,但第二個保存13,而不是10!這繼續N

我不能發佈圖像,所以你必須聽取我的話或運行代碼。

有誰知道如何解決這個問題?

+0

請修復您的文章中的縮進,以清楚內容是什麼。 – BrenBarn 2013-04-23 18:37:03

+0

現在這更清楚了嗎? – user2312599 2013-04-23 18:50:37

回答

0

默認情況下,座標軸之間的座標軸不會被清除,所以當您繪製第二個座標圖時,它會添加到已經繪製的座標軸上。要清除它,請在撥打polar之前插入pyplot.cla()

+0

完美的作品,非常感謝! – user2312599 2013-04-23 19:15:50

0

我在類似的情況已經發現這是好事,適當地初始化的軸的

for N in nrange: 
    {Make the data} 

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

這將自動清除軸,顯然是可讀的。如果您也使用py.xlabel,您可能希望將其更改爲ax.set_xlabel,而不是將其明確。