python-3.x - 将matplotlib图表直接导出到Excel?不先保存到文件

标签 python-3.x matplotlib xlsxwriter

我正在尝试使用 xlsx 编写器将 matplotlib 图像直接写入 Excel 文件 - 理想情况下不将文件保存到磁盘。

我找到了这个答案:Writing pandas/matplotlib image directly into XLSX file但我无法让它工作,尤其是 Python 3。

这个:wks1.insert_image(2,2, imgdata 不起作用,因为:

path should be string, bytes, os.PathLike or integer, not _io.BytesIO

这个:wks1.insert_image(2,2,"",{'image data': imgdata}) 发出警告

Image file '' not found.

并生成一个没有图表的 excel 文件。

有效的方法是将文件保存在本地 - 但我想了解是否有办法避免它。

fig.savefig('test.png', format='png')
wks1.insert_image(2,2, 'test.png')

想法?完整代码为:

import xlsxwriter
import numpy as np
import matplotlib.pyplot as plt
import io

x=np.linspace(-10,10,100)
y=x**2

fig,ax=plt.subplots()
ax.plot(x,y)

workbook = xlsxwriter.Workbook('test chart.xlsx')
wks1=workbook.add_worksheet('Test chart')
wks1.write(0,0,'test')

imgdata=io.BytesIO()
fig.savefig(imgdata, format='png')

wks1.insert_image(2,2,"",{'image data': imgdata})
#wks1.insert_image(2,2, imgdata)

workbook.close()

最佳答案

According to the documentation (以及您提供的问题的链接),要传递给 insert_image 的可选参数的正确拼写是 image_data(注意下划线 _)

import xlsxwriter
import numpy as np
import matplotlib.pyplot as plt
import io

x=np.linspace(-10,10,100)
y=x**2

fig,ax=plt.subplots()
ax.plot(x,y)

workbook = xlsxwriter.Workbook('test chart.xlsx')
wks1=workbook.add_worksheet('Test chart')
wks1.write(0,0,'test')

imgdata=io.BytesIO()
fig.savefig(imgdata, format='png')
wks1.insert_image(2,2, '', {'image_data': imgdata})

workbook.close()

关于python-3.x - 将matplotlib图表直接导出到Excel?不先保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55220000/

相关文章:

python - XlsxWriter导出的文件有时无法被Numbers打开

python - 如何使用重复的索引分类数据创建多线图?

python - Matplotlib python show() 立即返回

python - 如何使用 xlsxwriter (不使用 pandas)将一组列表写入 Excel?

python-3.x - pandas MultiIndex 中的代码有什么用?

python - 如何对二叉搜索树中给定值下的所有节点求和?

python-3.x - Tensorflow (.pb) 格式到 Keras (.h5)

python - 使用 pycountry 检查 name/common_name/official_name

python - 如何在散点图 Python 中返回点的颜色

python - xlsxwriter worksheet.write_blank 适用于范围