我将matplotlib文件保存为.tiff图像.我希望能够打开一个excel文件并将图像粘贴到那里.
openpyxl似乎不支持图像嵌入.xlwt确实只有bmp.
或者,如果我可以通过编程方式将tiff转换为bmp,这也可能有所帮助.
我们欢迎任何一个想法.
相近
但是,从tiff到bmp的转换是可以接受的,因为我的图表量很小(每个文件大约10个).
我在pandas/matplotlib中生成图并希望将它们写入XLSX文件.我不打算创建原生Excel图表; 我只是把这些情节写成非交互式图像.我正在使用XlsxWriter库/引擎.
我找到的最接近的解决方案是这个SO问题的答案,它建议使用XlsxWriter.write_image()方法.但是,此方法似乎将文件名作为输入.我试图以编程方式从pandas/matplotlib plot()调用传递直接输出,例如:
h = results.resid.hist()
worksheet.insert_image(row, 0, h) # doesn't work
Run Code Online (Sandbox Code Playgroud)
或这个:
s = df.plot(kind="scatter", x="some_x_variable", y="resid")
worksheet.insert_image(row, 0, s) # doesn't work
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一点,缺少首先将图像写入磁盘文件的解决方法?
下面的回答让我走上正轨并接受了.我需要进行一些更改,主要是(我认为),因为我使用的是Python 3,也许还有一些API更改.这是解决方案:
from io import BytesIO
import matplotlib.pyplot as plt
imgdata = BytesIO()
fig, ax = plt.subplots()
results.resid.hist(ax=ax)
fig.savefig(imgdata, format="png")
imgdata.seek(0)
worksheet.insert_image(
row, 0, "",
{'image_data': imgdata}
)
Run Code Online (Sandbox Code Playgroud)
将""在insert_image()代码欺骗Excel中,这仍然是期待一个文件名/ URL /等.