Usando o Backend Agg do Matplotlib para Geração de Imagens

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Este laboratório irá guiá-lo através do processo de utilização do backend agg diretamente para criar imagens em Python Matplotlib. O backend agg é útil para desenvolvedores de aplicações web que desejam ter controlo total sobre o seu código sem usar a interface pyplot para gerir figuras, fechar figuras, etc. Neste laboratório, mostraremos como guardar o conteúdo da tela agg num ficheiro e como extraí-lo para um array numpy, que pode, por sua vez, ser passado para Pillow.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e aceder ao Jupyter Notebook para praticar.

Por vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para si.

Criar uma Figura e uma Tela (Canvas)

Primeiro, precisamos criar uma Figura e uma Tela (Canvas). A Figura define o tamanho, a forma e o conteúdo do gráfico, enquanto a Tela é onde a Figura é desenhada.

from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure

fig = Figure(figsize=(5, 4), dpi=100)
canvas = FigureCanvasAgg(fig)

Adicionar Dados de Plotagem à Figura

Agora que temos uma Figura e uma Tela (Canvas), podemos adicionar alguns dados ao gráfico. Neste exemplo, adicionaremos um gráfico de linha simples.

ax = fig.add_subplot()
ax.plot([1, 2, 3])

Salvar a Figura em um Arquivo

Existem duas opções para salvar o gráfico. A primeira opção é salvar a Figura em um arquivo. Neste exemplo, salvaremos o gráfico como uma imagem PNG.

fig.savefig("test.png")

Extrair o Buffer do Renderizador para um Array NumPy

A segunda opção para salvar o gráfico é extrair o buffer do renderizador para um array NumPy. Isso permite que você use o Matplotlib em um script cgi sem precisar escrever o gráfico no disco. Neste exemplo, extrairemos o buffer do renderizador e o converteremos em um array NumPy.

import numpy as np

canvas.draw()
rgba = np.asarray(canvas.buffer_rgba())

Salvar o Array NumPy em uma Imagem Pillow

Agora que temos o array NumPy, podemos passá-lo para o Pillow e salvá-lo em qualquer formato suportado pelo Pillow. Neste exemplo, salvaremos o gráfico como uma imagem BMP.

from PIL import Image

im = Image.fromarray(rgba)
im.save("test.bmp")

Resumo

Neste laboratório, mostramos como usar o backend agg no Python Matplotlib para criar imagens. Criamos uma Figura e um Canvas, adicionamos dados ao gráfico e salvamos o gráfico como uma imagem PNG. Também extraímos o buffer do renderizador para um array NumPy e salvamos o gráfico como uma imagem BMP usando Pillow. Essas técnicas são úteis para desenvolvedores de aplicações web que desejam ter controle total sobre seu código sem usar a interface pyplot para gerenciar figuras, fechamento de figuras, etc.