首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将列表变量传递给matplotlib plt.savefig参数

如何将列表变量传递给matplotlib plt.savefig参数
EN

Stack Overflow用户
提问于 2019-08-02 09:20:07
回答 1查看 2.5K关注 0票数 0

我有一个for循环,在每个循环中保存一个图。我希望列表中的字符串名是savefig文件名。但是,Savefig需要文件名路径或文件名+格式。

我正在努力将列出的变量字符串作为文件名传递。Savefig推断数据本身,而不是字符串名。克服的建议,非常感谢。

最后,我希望我的图表被命名为苹果和香蕉(见下文)。

我在for循环中尝试了下面的方法,但是所有返回的错误。

代码语言:javascript
运行
复制
#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)

EN

回答 1

Stack Overflow用户

发布于 2019-08-02 09:30:20

根据您得到的错误,问题是由于保存图像的未知扩展。

因此,只要简单地添加一个扩展('jpg','png',.)就可以解决这个问题。为了plt.savefig(str(item)),成为plt.savefig(str(item) + '.jpg')

编辑:

由于list_to_plot包含数据格式,并且基于我们在评论中讨论的内容,我建议如下:

使用dataframes名称创建另一个列表,解决方案如下:

代码语言:javascript
运行
复制
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]):
        # do your processing
        item.plot(y='Delta Port/STBD', label='Sway')
        # save the image with the appropriate index
        plt.savefig(names[elt] + '{}.jpg'.format(i))
        plt.show()
        plt.clf()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57323493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档