【问题标题】:Exporting a matplotlib chart directly to Excel? Without saving to file first将matplotlib图表直接导出到Excel?不先保存到文件
【发布时间】:2019-08-08 17:46:48
【问题描述】:

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

我找到了这个答案:Writing pandas/matplotlib image directly into XLSX file,但我无法让它工作,尤其是 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')

想法?完整代码为:

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()

【问题讨论】:

  • 由于链接的问题包含当前问题的答案(请参阅更新部分),这可能会作为重复关闭
  • 是的 - 公平地说,它可以完全删除

标签: python-3.x matplotlib xlsxwriter


【解决方案1】:

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()

【讨论】:

  • 这可以复制到现有的 excel 文档中吗?我们可以指定工作表名称吗?
猜你喜欢
  • 2012-05-11
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 2018-06-06
  • 2017-05-05
相关资源
最近更新 更多