为什么我的plt.savefig不起作用?

时间:2015-06-10 19:22:06

标签: python numpy matplotlib

我有一个简单的python代码如下:

import numpy as np
import matplotlib.pyplot as plt

"""
Here are the solutions and the plot.
"""

# Create the axis and plot.
plt.axis([0, 10, 0, 10])
axis_x = range(1, 11)
grd = [1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1]
grd2 = [1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2, 9.2, 10.2]
plt.plot(axis_x, grd, '-g', label='BR1')
plt.plot(axis_x, grd2, '-b', label='BR2')
plt.legend(loc='upper left')
plt.grid()
plt.show()

# Save the results vector to a text file.
np.savetxt('test.out', (grd, grd2))

# Save the figure as '.eps' file.
plt.savefig('expl.pdf', format='pdf', dpi=1200)

当我打开输出文件expl.pdf和/或test.out时,我发现它们是空白的,没有任何内容。为什么呢?

感谢。

3 个答案:

答案 0 :(得分:33)

关闭plt.show()显示的图像时,图像将关闭并从内存中释放。

在致电savefig之前,您应致电savetxtshow

答案 1 :(得分:2)

由于您定义的列表axis_x的长度仅为9,而grdgrd2的长度等于10,因此无法生成您的绘图。 只需将axis_x的定义替换为:

axis_x=range(1,11) 并且你的情节会显示出来并保存好。

答案 2 :(得分:0)

我只是遇到了同样的问题,解决方法是将savefig命令放在plt.show()语句之前,但是要明确指定文件类型。这是我的代码:

plt.suptitle("~~~~")
plt.title("~~~~")
ax = sns.boxplot(x=scores_df.score, y=scores_df.response)
plt.savefig("test.png", **format="png"**)
plt.show()

plt.close()