Matplotlib - экспорт рисунка в png в буфере памяти - PullRequest
0 голосов
/ 07 мая 2020

Можно ли экспортировать фигуру matplotlib как png в байтовый тип? Вот код, который у меня сейчас есть:

def import_chart(df, x_label, y_label, title):
    fig, ax = plt.subplots()
    ax.plot(data[x_label], data[y_label])

    ax.set(xlabel=x_label, ylabel=y_label,
           title=title)
    image_name = 'test.png'

    fig.savefig(image_name)
    f = open(image_name, 'rb+')
    img = f.read()
    f.close()
    os.remove(image_name)

    return img

Возвращаемое изображение относится к классу типа «байты». Я бы хотел избежать сохранения на жесткий диск и повторного чтения. Примерно так:

def import_chart(self, x_label, y_label, title):
    fig, ax = plt.subplots()
    data = self.file_data.get_column([x_label,y_label])
    ax.plot(data[x_label], data[y_label])

    ax.set(xlabel=x_label, ylabel=y_label,
           title=title)
    buffer = buffer.to_buffer(fig.savefig(), format='png')
    img = buffer.read()
    return img

1 Ответ

0 голосов
/ 07 мая 2020

Я использовал это для рендеринга изображений matplotlib с веб-сервера:

import base64
from io import BytesIO

...

buffer = BytesIO()
plt.savefig(buffer, format='png')
buffer.seek(0)
image_png = buffer.getvalue()
buffer.close()
graphic = base64.b64encode(image_png)
graphic = graphic.decode('utf-8')

return graphic
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...