2010-08-16 2 views
1

Ce qui est arrivé est que j'ai suivi ce demo, je l'ai modifié pour répondre à mes besoins si cela avait fonctionné, l'ai changé pour utiliser une fonction pour dessiner deux graphiques mais maintenant ça ne marche pas du tout plt.show() ou plt.savefig()matplotlib bizarrerie, ça ne dessine pas mon graphique

voici mon code

import csv 
import numpy as np 

import matplotlib 
matplotlib.use('Agg') 

import matplotlib.pyplot as plt 
import matplotlib.mlab as mlab 

# I converted excel to a csv file 
data = [x for x in csv.reader(open('ASS1_Q1.csv'))] 

question1 = {} 
question1['males'] = [] 
question1['females'] = [] 
for x in data: 
    if x[0].lower() == "male": 
     question1["males"].append(float(x[1])) 
    elif x[0].lower() == "female": 
     question1['females'].append(float(x[1])) 
    else: 
     print "Not a valid dataline", x 

def plot_graph(data, filename): 

    fig = plt.figure() 
    ax = fig.add_subplot(111) 

    n, bins, patches = ax.hist(np.array(data), bins=13, align='mid', facecolor='#888888') 

    ax.set_xlabel('Speed in kph') 
    ax.set_ylabel('Amount of Females') 

    ax.set_xlim(min(data, max(data))) 

    # plt.savefig(filename) 
    plt.show()   

plot_graph(question1['males'], "ASS1Q1-males.eps") 
#plot_graph(question1['females'], "ASSQ2-females.eps") 
print summary(question1['males']) 
print summary(question1['females']) 

quelqu'un peut-il expliquer pourquoi cela se passe? Qu'est-ce que je fais mal?

Répondre

1

Essayez de supprimer

import matplotlib 
matplotlib.use('Agg') 

La commande

python -c 'import matplotlib; matplotlib.use("")' 

vous montrera les arguments de chaîne valides qui peuvent être envoyés à matplotlib.use. Sur ma machine, 'Agg' est répertorié comme valide, bien que je ne reçoive aucune sortie lorsque celle-ci est définie. Si vous êtes curieux, vous pouvez continuer à essayer différentes options jusqu'à ce que vous en trouviez une qui fonctionne.

Lorsque vous trouvez celui qui vous préférez, vous pouvez également trouver plus pratique de définir quelque chose comme

backend  : GtkAgg 

dans votre ~/.matplotlib/matplotlibrc au lieu d'utiliser matplotlib.use(...).

+0

merci je vais essayer maintenant –

+0

oh j'ai trouvé la ligne de problème 36, j'ai les parenthèses tout faux: /, ne sais pas comment cela est arrivé, aurait dû expliquer mon moi mieux comme il dessinait un espace blanc pour un graphique à la place –

+0

@Daniel, très heureux d'entendre que vous avez trouvé le problème, même si ma suggestion était dans la mauvaise direction. :) – unutbu

Questions connexes