Экспорт таблицы matplotlib непосредственно в Excel?Без сохранения в файл первым - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь записать изображение matplotlib напрямую в файл Excel, используя xlsx writer - в идеале, без сохранения файла на диск.

Я нашел этот ответ: Запись изображения pandas / matplotlib напрямуюв файл XLSX , но я не могу заставить его работать, особенно не с Python 3.

Это: wks1.insert_image(2,2, imgdata не работает, потому что:

путь должен бытьстрока, байты, os.PathLike или целое число, а не _io.BytesIO

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

1 Ответ

1 голос
/ 18 марта 2019

В соответствии с документацией (и ссылкой на предоставленный вами вопрос) правильное написание для необязательного аргумента, передаваемого на 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()
...