Python Matplotlib 保存图表但不显示

9

我想创建一个直方图并将其保存到文件中,而不在屏幕上显示它。我现在的代码默认情况下会显示图形,我找不到任何方法来禁止显示图形。我已经尝试了pyplot.hist(nrs),但仍然存在同样的问题。

import math, time, matplotlib.pyplot as plt, pylab; 
import numpy as np; 

nrs = [1.0, 2.0, 1.0, 3.0, 4.0]
freq,bins = np.histogram(nrs)
fig = plt.figure(figsize=(5,4), dpi=100); 
freq = np.append(freq, [0.0])
graph = fig.add_subplot(111);
x = graph.bar(bins, freq)

fig.savefig( "test.png")

我无法重现这种行为(matplotlib 1.3.1)。您使用的是哪个版本? - igavriil
你确定你的代码中没有任何 plt.show()fig.show() 吗? - Srivatsan
2
只需将此保存为 .py 脚本并使用 python script.py 运行即可。这应该可以工作。如果没有调用 plt.show(),您唯一可能得到一个图形的方法是在 IPython 的交互模式下。 - rth
2
你想使用其中一个无头后端(例如Agg)。请参见https://dev59.com/1HE85IYBdhLWcg3wYicB#3054314获取示例(那里有稍微不同的问题,但解决方案相同)。 - tacaswell
4
您可能正在使用交互式客户端(IPython)。 plt.ioff() 将关闭自动绘图 - Imanol Luengo
1个回答

7
感谢 tcasewell,添加了内容。
import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')

在导入pyplot之前,问题已经解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接