2010-04-07 158 views
3

我想繪製以下!Matplotlib:繪製離散值

from numpy import * 
from pylab import * 
import random 

for x in range(1,500): 
    y = random.randint(1,25000) 
    print(x,y) 
    plot(x,y) 

show() 

但是,我不斷收到一個空白圖(?)。爲了確保程序邏輯正確,我添加了代碼print(x,y),只是確認(x,y)對正在生成。

(x,y)對正在生成,但沒有圖,我一直得到一個空白圖。

任何幫助?

+0

Arkapravo,我沒有問題瓦特/接受回答;我只想提一下,這五行模板:從matplotlib導入pyplot作爲PLT;無花果= PLT.figure(); AX1 = fig.add_subplot(111); ax1.plot(x,y); PLT.show()是一種快速的方法,可以在98%的時間內獲得有效的x-y圖。 ('x','y'是列表或一維Numpy數組,順便說一句)。 – doug 2010-04-07 08:19:39

+1

@doug:你可以用更簡單的方式去做同樣的事情:'從matplotlib導入pyplot到plt; plt.plot(x,y); plt.show()'。 – EOL 2010-04-07 09:20:12

+0

@doug:謝謝! ...我接受了丹尼爾G的回答,因爲它立即解決了我所有的問題! .... :) ..太糟糕了不能選擇2個答案! – Arkapravo 2010-04-07 10:30:07

回答

4

首先,我有時做

from matplotlib import pyplot 

而是採用pylab有更好的成功,雖然這不應該在這種情況下的差異。

我認爲你的實際問題可能是點被繪製,但不可見。它可以更好地工作,一次繪製的所有點使用的列表:

xPoints = [] 
yPoints = [] 
for x in range(1,500): 
    y = random.randint(1,25000) 
    xPoints.append(x) 
    yPoints.append(y) 
pyplot.plot(xPoints, yPoints) 
pyplot.show() 

爲了使這個甚至更整潔,您可以使用生成器表達式:

xPoints = range(1,500) 
yPoints = [random.randint(1,25000) for _ in range(1,500)] 
pyplot.plot(xPoints, yPoints) 
pyplot.show() 
+3

對於'import pyplot'+1 - 顯然對於那些以前的Matlab用戶來說,pylab是一個巨大的便利,但是這兩個方言在文檔,例子等中幾乎可以互換使用,這使得Matplotlib變得更加出色,爲我學習。 – doug 2010-04-07 08:29:55

+0

非常感謝帥哥!我想我最後一次涉及matplotlib,有時在2009年10月,有些需求出現了,我不得不在2010年4月回到它。 – Arkapravo 2010-04-07 09:58:03