matplotlib 奇怪情况,无法绘制我的图表

1 投票
1 回答
1040 浏览
提问于 2025-04-16 02:51

发生的事情是,我跟着这个示例,把它修改成我需要的样子,原本是可以正常工作的。后来我把它改成用一个函数来画两个图,但现在无论是用plt.show()还是plt.savefig()都完全不工作了。

这是我的代码

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 个回答

1

试着去掉

import matplotlib
matplotlib.use('Agg')

这个命令

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

会告诉你可以发送给 matplotlib.use 的有效字符串参数。在我的电脑上,'Agg' 被列为有效选项,不过当我设置成这个时没有任何输出。如果你感兴趣,可以尝试不同的选项,直到找到一个有效的。

当你找到你喜欢的选项后,你可能会觉得在你的 ~/.matplotlib/matplotlibrc 文件中设置类似于

backend      : GtkAgg

会更方便,而不是每次都用 matplotlib.use(...)

撰写回答