plt.savefig 不覆盖现有文件
plt.savefig doesn't overwrite existing file
我有一个循环,它遍历一组“程序”名称,创建一个情节并将其放在一个作品上sheet,每个作品都有 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})
在每个 sheet 上放置一个相同的图表。看起来 chart.png 并没有被每次新保存覆盖,即使之前的代码显示 matplotlib 正在为每个程序创建一个新图表。感谢您对此提供的任何帮助。
worksheet.insert_image()
does not store the image into the XLSX file directly (Python source)。相反,它只在列表中记录单元格、图像文件名、偏移量、比例等信息。
仅在 workbook.close()
,XLSX 和随附的图像才存储到磁盘。因此,您应该只会看到文件中重复出现的图像的最新版本。
最简单的方法是接受在写入 XLSX 之前需要多个临时图像文件这一事实。您可以将它们存储在临时目录中,跟踪文件名并在工作簿写入磁盘后删除这些文件。
我有一个循环,它遍历一组“程序”名称,创建一个情节并将其放在一个作品上sheet,每个作品都有 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})
在每个 sheet 上放置一个相同的图表。看起来 chart.png 并没有被每次新保存覆盖,即使之前的代码显示 matplotlib 正在为每个程序创建一个新图表。感谢您对此提供的任何帮助。
worksheet.insert_image()
does not store the image into the XLSX file directly (Python source)。相反,它只在列表中记录单元格、图像文件名、偏移量、比例等信息。
仅在 workbook.close()
,XLSX 和随附的图像才存储到磁盘。因此,您应该只会看到文件中重复出现的图像的最新版本。
最简单的方法是接受在写入 XLSX 之前需要多个临时图像文件这一事实。您可以将它们存储在临时目录中,跟踪文件名并在工作簿写入磁盘后删除这些文件。