Matplotlib é uma poderosa biblioteca Python para criar visualizações. Salvar gráficos como arquivos de imagem é uma tarefa comum, mas o comportamento padrão de exibir o gráfico antes de salvar pode ser ineficiente. Este artigo demonstra como salvar eficientemente gráficos Matplotlib diretamente em arquivos de imagem sem a etapa de exibição intermediária.
Sumário
Usando savefig()
para Salvar Gráficos
O método savefig()
é a opção mais versátil para salvar gráficos Matplotlib. Ele oferece controle sobre o formato do arquivo, resolução e tamanho da figura. Para evitar exibir o gráfico, chame savefig()
antes de qualquer comando que mostraria o gráfico (como plt.show()
). Lembre-se de fechar a figura usando plt.close()
para liberar memória, particularmente quando se trabalha com numerosos gráficos.
import matplotlib.pyplot as plt
import numpy as np
# Dados de exemplo
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Criar o gráfico
plt.plot(x, y)
plt.xlabel("Eixo X")
plt.ylabel("Eixo Y")
plt.title("Onda Senoidal")
# Salvar a figura SEM exibi-la
plt.savefig("sine_wave.png", dpi=300, bbox_inches='tight') # dpi controla a resolução, bbox_inches garante que todos os elementos sejam incluídos
plt.close()
Este código salva o gráfico como sine_wave.png
em 300 DPI. O argumento bbox_inches='tight'
garante que todo o gráfico, incluindo rótulos e títulos, seja capturado na imagem salva. Você pode facilmente alterar o formato do arquivo (por exemplo, “.pdf”, “.svg”, “.jpg”). Consulte a documentação do Matplotlib para uma lista completa de formatos suportados.
Usando imsave()
para Salvar Matrizes de Imagem
Para salvar matrizes de imagem diretamente, imsave()
fornece uma abordagem mais concisa. Isso é particularmente útil se você já gerou dados de imagem como uma matriz NumPy, eliminando a necessidade de criar um objeto de figura Matplotlib.
import matplotlib.pyplot as plt
import numpy as np
# Criar uma matriz de imagem de exemplo (escala de cinza)
image_array = np.random.rand(256, 256)
# Salvar a matriz de imagem em um arquivo
plt.imsave("random_image.png", image_array, cmap='gray')
Este código cria e salva uma imagem em escala de cinza de 256×256. O argumento cmap
especifica a paleta de cores; ‘gray’ é usado aqui. Outras paletas de cores estão disponíveis. imsave()
é eficiente porque ignora o tratamento de figuras.
Em resumo, tanto savefig()
quanto imsave()
oferecem maneiras eficientes de salvar saídas Matplotlib sem exibi-las. A melhor escolha depende se você está trabalhando com uma figura completa ou uma matriz de imagem bruta. Priorizar savefig()
antes de plt.show()
e usar plt.close()
aumenta a eficiência, especialmente ao gerar muitas imagens.