2010-08-16 47 views
1

发生了什么是我跟着这demo,我修改它以适应我的需要它工作,改变它使用一个函数来绘制两个图,但现在它根本不工作plt.show()plt.savefig()matplotlib奇怪,它不是绘制我的图

这里是我的代码

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']) 

有人可以解释为什么发生这种情况?我究竟做错了什么?

回答

1

尝试删除

import matplotlib 
matplotlib.use('Agg') 

命令

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

会告诉你可以发送到matplotlib.use有效的字符串参数。 在我的机器上,'Agg'被列为有效,尽管在设置时我没有输出。如果你很好奇,你可以继续尝试各种选择,直到你找到一个有效的工作。

当你发现你喜欢的人,你也可能会发现更方便地设置类似

backend  : GtkAgg 

你的〜/ .matplotlib/matplotlibrc而不是使用matplotlib.use(...)

+0

谢谢我现在试试 – 2010-08-16 13:34:21

+0

哦,我发现问题行36,我的括号全错了:/,不知道那是怎么回事,应该更好地解释我的自我,因为它画了一个空白区域一个图形,而不是 – 2010-08-16 13:50:20

+0

@Daniel,很高兴听到你发现问题,即使我的建议是在错误的方向。 :) – unutbu 2010-08-16 14:02:33