我有一个for循环,在每个循环中保存一个图。我希望列表中的字符串名是savefig文件名。但是,Savefig需要文件名路径或文件名+格式。
我正在努力将列出的变量字符串作为文件名传递。Savefig推断数据本身,而不是字符串名。克服的建议,非常感谢。
最后,我希望我的图表被命名为苹果和香蕉(见下文)。
我在for循环中尝试了下面的方法,但是所有返回的错误。
#plt.savefig(str(item)) #plt.savefig("Graph" + str(item) +".png", format="PNG") #plt.savefig('Graph_{}.png'.format(item)) #plt.savefig(item, format='.jpg') apples = df_final[(df_final['Timetag [UTC]'] > '21/12/2018 13:28:00') & (df_final['Timetag [UTC]'] <= '21/12/2018 19:00:00')] bananas = df_final[(df_final['Timetag [UTC]'] > '21/12/2018 17:28:00') & (df_final['Timetag [UTC]'] <= '21/12/2018 21:00:00')] List_to_plot = [apples, bananas] for item in List_to_plot: item.plot(y='Delta Port/STBD', label='Sway') plt.savefig(str(item)) plt.show() plt.clf()
文件"",第17行,在plt.savefig(str(item))中 文件"C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py",第689行,在Save图res = fig.savefig(*args,**kwargs)中 文件"C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\figure.py",第2094行,在self.canvas.print_figure(fname,**kwargs)中 文件"C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backend_bases.py",行2006,格式为print_figure canvas =self._get_output_canvas(格式) 文件"C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backend_bases.py",line 1948,in _get_output_canvas .format(fmt,",".join(sorted(self.get_supported_filetypes())))) ) ValueError:不支持格式‘027619\n\n 19920行x 15列’(支持格式: eps、jpeg、jpg、pdf、pgf、png、ps、raw、rgba、svg、svgz、tif、tiff)
发布于 2019-08-02 09:30:20
根据您得到的错误,问题是由于保存图像的未知扩展。
因此,只要简单地添加一个扩展('jpg','png',.)就可以解决这个问题。为了 plt.savefig(str(item)) ,成为 plt.savefig(str(item) + '.jpg') 。
plt.savefig(str(item))
plt.savefig(str(item) + '.jpg')
编辑:
由于 list_to_plot 包含数据格式,并且基于我们在评论中讨论的内容,我建议如下:
list_to_plot
使用dataframes名称创建另一个列表,解决方案如下:
List_to_plot = [apples, bananas] names = ['apples', 'bananas'] # loop over the element in the list_to_plot for elt in (0, 1): # loop over the length of each dataframe to get the index of the image for i in range(list_to_plot[elt].shape[0]):