plt.savefig通过一个不工作的循环



我已经看到有类似主题的问题,但答案对我的问题不起作用。我试图循环浏览dataframes(一个时间序列(的列表,并为每个数据帧保存一个带有四个子时隙的图。代码和循环运行良好(显示所有绘图(,直到我添加带有plt.savefig的行。我在Spyder 3.1.4中使用Phyton 3.6。

当我添加plt.savefig命令时,只显示循环中的第一个绘图,并得到错误消息:

filename_or_obj = open(filename_or_obj, 'wb')
FileNotFoundError: [Errno 2] No such file or directory:

这是一些测试数据和代码

#non-fancy test data
dates = pd.date_range(start='2008-01-01 00:30:00',end='2018-01-01 00:00:00',freq='30T')
data1 = pd.DataFrame(np.random.randint(0,100,size=(175344, 4)),columns=list('ABCD'))
data2 = pd.DataFrame(np.random.randint(0,100,size=(175344, 4)),columns=list('ABCD'))
d1={'col_1': datetest, 'col_2': data1['D'],'col_3':data1['D'],'col_4': data1['D'],'col_5': data1['D'] }
d2={'col_1': datetest, 'col_2': data2['D'],'col_3':data2['D'],'col_4': data2['D'],'col_5': data2['D'] }
df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2) 
#make a list
t_list=[df1,df2]
#start the loop for plotting
for year in t_list:
ax1 = plt.subplot(411)
ax2 = plt.subplot(412)
ax3 = plt.subplot(413)
ax4 = plt.subplot(414)
ax1.plot_date(year.col_1,year.col_2)
ax2.plot_date(year.col_1,year.col_2)
ax3.plot_date(year.col_1,year.col_2)
ax4.plot_date(year.col_1,year.col_4)
plt.savefig('{}.png'.format(year))
plt.close()

我也尝试过'lala'+str(year)+'.png',但没有成功。当我选择一个不变的静态名称时,最后一个子片段将保存到一个文件中。我读了一些相关主题的帖子,但我找不到能帮助我解决问题的帖子。

year是一个DataFrame。不能将数据帧格式化为可接受的字符串作为文件名。

使用类似的东西

for i, year in enumerate(t_list):
# ...
plt.savefig('lala'+str(i)+'.png')

相反。

相关内容

最新更新