2010-04-07 9 views
3

J'essaie de tracer ce qui suit!Matplotlib: tracer des valeurs discrètes

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

Cependant, je continue d'obtenir un graphique vide (?). Juste pour m'assurer que la logique du programme est correcte, j'ai ajouté le code print(x,y), juste la confirmation que les paires (x, y) sont générées.

(x, y) des paires sont générées, mais il n'y a pas de tracé, je continue à obtenir un graphique vide.

Une aide?

+0

Arkapravo, je n'ai aucun problème avec/l'accepté répondre; Je voulais juste mentionner que ce modèle de cinq lignes: à partir de matplotlib import pyplot comme PLT; fig = PLT.figure(); ax1 = fig.add_subplot (111); ax1.plot (x, y); PLT.show(), est un moyen rapide d'obtenir un tracé x-y fonctionnel 98% du temps. ('x', 'y' sont des listes ou des tableaux 1D Numpy, btw). – doug

+1

@doug: vous pouvez faire la même chose d'une manière plus simple: 'from matplotlib import pyplot at plt; plt.plot (x, y); plt.show() '. – EOL

+0

@doug: Merci! ... J'ai accepté la réponse de Daniel G car elle a immédiatement résolu tous mes problèmes! .... :) .. trop mauvais 2 réponses ne peuvent pas être choisies! – Arkapravo

Répondre

4

D'abord, je l'ai parfois eu plus de succès en faisant

from matplotlib import pyplot 

au lieu d'utiliser pylab, bien que cela ne devrait pas faire une différence dans ce cas.

Je pense que votre problème actuel pourrait être que les points sont tracés mais ne sont pas visibles. Il peut fonctionner mieux tracer tous les points à la fois à l'aide d'une liste:

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

Pour rendre cela même plus propre, vous pouvez utiliser des expressions du générateur:

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

+1 pour 'import pyplot' - évidemment pour ces anciens utilisateurs de Matlab, pylab est une commodité massive, mais l'utilisation presque interchangeable de ces deux dialectes dans les docs, exemples, etc. Matplotlib, brillant comme il est, beaucoup plus difficile pour moi d'apprendre. – doug

+0

Merci beaucoup mecs! Je suppose que j'avais tapé pour la dernière fois avec matplotlib, parfois en octobre 2009, certains besoins sont apparus que je devais y revenir en avril 2010. – Arkapravo