Pyt*_*ous 1 matplotlib python-3.x xlsxwriter
我正在尝试使用 xlsx writer 将 matplotlib 图像直接写入 Excel 文件 - 理想情况下不将文件保存到磁盘。
我找到了这个答案:将 pandas/matplotlib 图像直接写入 XLSX 文件,但我无法让它工作,尤其是在 Python 3 中。
这:wks1.insert_image(2,2, imgdata
不起作用,因为:
路径应该是字符串、字节、os.PathLike 或整数,而不是 _io.BytesIO
这wks1.insert_image(2,2,"",{'image data': imgdata}
:) 发出警告
未找到图像文件“”。
并生成一个没有图表的excel文件。
什么工作是在本地保存文件 - 但我想了解是否有办法避免它。
fig.savefig('test.png', format='png')
wks1.insert_image(2,2, 'test.png')
Run Code Online (Sandbox Code Playgroud)
想法?完整代码是:
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()
Run Code Online (Sandbox Code Playgroud)
根据文档(以及指向您提供的问题的链接),要传递给的可选参数的正确拼写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()
Run Code Online (Sandbox Code Playgroud)