Curso matplotlib - Exportando o gráfico
Para exportar um gráfico desenhado com o matplotlib basta utilizar o plt.savefig()
, que deve ter como argumento o nome do arquivo que será criado, que deve conter a extensão do arquivo desejada. O plt.savefig()
deve ser adicionado logo acima de plt.show()
, e após todos os demais elementos terem sido criados. Por exemplo:
plt.figure()
...
plt.savefig()
plt.show()
Podemos verificar quais tipos de extensões podem ser utilizadas, utilizando o seguinte comando:
plt.gcf().canvas.get_supported_filetypes()
Que irá retornar um dict
contendo como key
a extensão e como value
o nome da respectiva key
.
{'eps': 'Encapsulated Postscript',
'jpg': 'Joint Photographic Experts Group',
'jpeg': 'Joint Photographic Experts Group',
'pdf': 'Portable Document Format',
'pgf': 'PGF code for LaTeX',
'png': 'Portable Network Graphics',
'ps': 'Postscript',
'raw': 'Raw RGBA bitmap',
'rgba': 'Raw RGBA bitmap',
'svg': 'Scalable Vector Graphics',
'svgz': 'Scalable Vector Graphics',
'tif': 'Tagged Image File Format',
'tiff': 'Tagged Image File Format'}
As opções podem variar de acordo com a versão do Python, versão do matplotlib e sistema operacional utilizado.
Para criar um arquivo com o nome "meu-grafico"
e com a extensão ".png"
, basta utilizar o plt.savefig("meu-grafico.png")
. Por exemplo:
plt.figure(figsize=(8,6))
plt.scatter(x[0], y[0], label=raca_cachorro[0], edgecolor='k', facecolor='none', marker='o', s = marker_size)
plt.scatter(x[1], y[1], label=raca_cachorro[1], edgecolor='k', facecolor='none', marker='s', s = marker_size)
plt.scatter(x[2], y[2], label=raca_cachorro[2], edgecolor='k', facecolor='none', marker='p', s = marker_size)
plt.scatter(x[3], y[3], label=raca_cachorro[3], edgecolor='k', facecolor='none', marker='*', s = marker_size)
plt.scatter(x[4], y[4], label=raca_cachorro[4], edgecolor='k', facecolor='none', marker='v', s = marker_size)
plt.scatter(x[5], y[5], label=raca_cachorro[5], edgecolor='k', facecolor='none', marker='^', s = marker_size)
plt.scatter(x[6], y[6], label=raca_cachorro[6], edgecolor='k', facecolor='none', marker='<', s = marker_size)
plt.scatter(x[7], y[7], label=raca_cachorro[7], edgecolor='k', facecolor='none', marker='>', s = marker_size)
plt.scatter(x[8], y[8], label=raca_cachorro[8], edgecolor='k', facecolor='k', marker='x', s = marker_size)
plt.scatter(x[9], y[9], label=raca_cachorro[9], edgecolor='k', facecolor='none', marker='D', s = marker_size)
plt.scatter(x[10], y[10], label=raca_cachorro[10], edgecolor='k', facecolor='none', marker='H', s = marker_size)
plt.legend(fontsize=12)
plt.xlabel("Peso (kg)", labelpad=15)
plt.ylabel("Altura (cm)", labelpad=15)
plt.title("Relação entre peso e altura de diversas raças de cachorros", pad=15)
plt.savefig("meu-grafico.png")
plt.show()
Figura 1 - Gráfico de dispersão exportando.
O arquivo será salvo no diretório onde o notebook esta armazenado. Para saber qual é o diretório em que o notebook está, podemos utilizar a biblioteca os
, e utilizar o método os.getcwd()
, que irá retornar o endereço local do arquivo do notebook.
import os
os.getcwd()
‘C:\Users\###\Graficos\01 - Grafico de dispersao\aula’
Em geral, arquivos com extensão '.png'
não são muito adequados para publicações, pois eles não tem muita resolução. Dê preferência para arquivos '.pdf'
, '.eps'
, '.tif'
ou '.svg'
. Atente as instruções da revista para a extensão recomendada.
Número de dpi's
Também podemos especificar a densidade de pixels (dpi) do gráfico, o que é feito passando um número (float
ou int
) através do parâmetro dpi
em plt.savefig()
. A quantidade de dpis padrão é de 100 dpis.
Por exemplo, para alterar o número de dpis de 100 (padrão) para 300:
plt.savefig("meu-grafico.png", dpi=300)
Figura 2 - Gráfico de dispersão exportando com 300 dpis.
Quanto maior o número de dpi’s, maior será a qualidade final do gráfico. Contudo, maior será o tamanho do arquivo gerado. O tamanho da Figura 1, desenhada com 100 dpis, é de 29 KB, enquanto que o tamanho da Figura 2, desenhada com 300 dpi’s é de 176 KB. Atente para as recomendações da revista quanto ao número de dpi’s.