plt.savefig不会覆盖现有文件

2024-06-24 12:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个循环,它通过一组“程序”名称运行,创建一个绘图并将其放置在工作表上,每个工作表都有xlsxwriter。为此,它将绘图临时保存为“chart.png”

plt.savefig('chart{}.png'.format(program))
plt.close()
ws.insert_image(r,2,'chart{}.png'.format(program),{'x_scale': 0.5, 'y_scale': 0.5})

这很好,但它为每个程序创建了一个单独的文件,我有50多个程序。我只想创建一个“chart.png”文件,放置它,然后覆盖下一个图表的文件,等等。但是,以下代码:

plt.savefig('chart.png')
plt.close()
ws.insert_image(r,2,'chart.png',{'x_scale': 0.5, 'y_scale': 0.5})

在每张工作表上放置一个相同的图表。看起来chart.png不会随着每次新保存而被覆盖,即使之前的代码显示matplotlib正在为每个程序创建一个新图表。感谢您在这方面的帮助


Tags: 文件image程序format绘图closewspng
1条回答
网友
1楼 · 发布于 2024-06-24 12:26:27

^{}不直接将图像存储到XLSX文件中(Python source)。相反,它只在列表中记录单元格、图像文件名、偏移量、比例等信息

只有在^{}上,XLSX和附带的映像才会存储到磁盘。因此,您应该只看到文件中重复的图像的最后版本

最简单的方法是接受这样一个事实:在编写XLSX之前,您需要多个临时图像文件。您可以将它们存储在临时目录中,跟踪文件名,并在工作簿写入磁盘后删除这些文件

相关问题 更多 >