Como salvar parcelas como um arquivo de imagem sem exibição em Matplotlib

Suraj Joshi 30 janeiro 2023
  1. Matplotlib savefig() Método para salvar imagem
  2. matplotlib.pyplot.imsave() Método para salvar imagem
Como salvar parcelas como um arquivo de imagem sem exibição em Matplotlib

Podemos simplesmente salvar os gráficos gerados a partir do Matplotlib utilizando os métodos savefig() e imsave(). Se estivermos em modo interativo, a trama poderá ser exibida. Para evitar a exibição do gráfico, utilizamos os métodos close() e ioff().

Matplotlib savefig() Método para salvar imagem

Podemos salvar parcelas geradas a partir da Matplotlib usando matplotlib.pyplot.savefig(). Podemos especificar o caminho e o formato em savefig() no qual o gráfico precisa ser salvo.

Sintaxe:

matplotlib.pyplot.savefig(
    fname,
    dpi=None,
    facecolor="w",
    edgecolor="w",
    orientation="portrait",
    papertype=None,
    format=None,
    transparent=False,
    bbox_inches=None,
    pad_inches=0.1,
    frameon=None,
    metadata=None,
)

Aqui, fname representa o nome do arquivo em relação ao caminho com respeito ao diretório atual.

Salvar plotagem sem exibição no modo interativo

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.savefig("Plot generated using Matplotlib.png")

Isto salva a trama gerada com o nome como Plot gerado utilizando Matplotlib.png no diretório de trabalho atual.

Também podemos salvar os lotes em outros formatos como png, jpg, svg, pdf e muitos outros. Da mesma forma, podemos utilizar diferentes argumentos do método figsave() personalizar a imagem.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.savefig("Customed Plot.pdf", dpi=300, bbox_inches="tight")

Isto salva o gráfico como Customed Plot.pdf dentro do diretório de trabalho. Aqui, dpi=300 representa 300 pontos por polegada na imagem salva, e bbox_inches='tight' representa nenhuma caixa de delimitação em torno da imagem de saída.

Salvar Plot sem exibição no modo não interativo

Entretanto, se estivermos em modo interativo, a figura é sempre mostrada. Para evitar isso, fechamos à força a janela da figura para evitar a exibição da trama utilizando os métodos close() e ioff(). O modo interativo é ativado por causa do método ion().

Evite a exibição com o método close()

matplotlib.pyplot.close pode ser usado para fechar a janela da figura.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
fig = plt.figure()
plt.ion()
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.close(fig)
plt.savefig("Plot generated using Matplotlib.png")

Evite a exibição com ioff() Método

Podemos desligar o modo interativo utilizando os métodos matplotlib.pyplot.ioff(). Isto impede que a figura seja exibida.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
fig = plt.figure()
plt.ion()
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.ioff()
plt.savefig("Plot generated using Matplotlib.png")

matplotlib.pyplot.imsave() Método para salvar imagem

Podemos utilizar matplotlib.pyplot.imsave() para salvar matrays como arquivos de imagem em Matplotlib.

import numpy as np
import matplotlib.pyplot as plt

image = np.random.randn(100, 100)
plt.imsave("new_1.png", image)
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn