Pregunta ¿Cómo se cambia el tamaño de las figuras dibujadas con matplotlib?


¿Cómo se cambia el tamaño de la figura dibujada con matplotlib?


1099
2017-12-01 21:24


origen


Respuestas:


figura te dice la firma de la llamada:

from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

figure(figsize=(1,1)) crearía una imagen de una pulgada por pulgada, que sería de 80 por 80 píxeles, a menos que también proporcione un argumento de dpi diferente.


673
2018-03-12 12:41



Si ya ha creado la figura, puede hacer esto rápidamente:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

Para propagar el cambio de tamaño a una ventana gui existente, agregue forward=True

fig.set_size_inches(18.5, 10.5, forward=True)

530
2017-11-29 17:30



Nota de depreciación:
  Según el guía oficial Matplotlib, uso de pylab módulo ya no es recomendado. Por favor considere usar el matplotlib.pyplot módulo en su lugar, como se describe por esta otra respuesta.

Lo siguiente parece funcionar:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

Esto hace que el ancho de la figura sea 5 pulgadas, y su altura 10 pulgadas.

La clase Figure luego usa esto como el valor predeterminado para uno de sus argumentos.


258
2017-12-01 21:28



Por favor intente con un código simple como el siguiente:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

Necesita establecer el tamaño de la figura antes de trazar.


152
2018-06-06 03:24



UTILIZANDO plt.rcParams

También existe esta solución en caso de que desee cambiar el tamaño sin utilizar el entorno de figuras. Entonces, en caso de que estés usando plt.plot() por ejemplo.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

Esto es muy útil cuando tramas en línea (por ejemplo, con IPython Notebook).

Conversión a cm

los figsize tuple acepta pulgadas así que si quieres establecerlo en centímetros tienes que dividirlos por 2.54 echas un vistazo a esta pregunta.


124
2018-01-18 10:55



El primer enlace en Google para 'matplotlib figure size' es AdjustingImageSize (Caché de Google de la página)

Aquí hay un script de prueba de la página anterior. Crea test[1-3].png archivos de diferentes tamaños de la misma imagen:

#!/usr/bin/env python
"""
This is a small demo file that helps teach how to adjust figure sizes
for matplotlib

"""

import matplotlib
print "using MPL version:", matplotlib.__version__
matplotlib.use("WXAgg") # do this before pylab so you don'tget the default back end.

import pylab
import numpy as np

# Generate and plot some simple data:
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

pylab.plot(x,y)
F = pylab.gcf()

# Now check everything with the defaults:
DPI = F.get_dpi()
print "DPI:", DPI
DefaultSize = F.get_size_inches()
print "Default size in Inches", DefaultSize
print "Which should result in a %i x %i Image"%(DPI*DefaultSize[0], DPI*DefaultSize[1])
# the default is 100dpi for savefig:
F.savefig("test1.png")
# this gives me a 797 x 566 pixel image, which is about 100 DPI

# Now make the image twice as big, while keeping the fonts and all the
# same size
F.set_size_inches( (DefaultSize[0]*2, DefaultSize[1]*2) )
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test2.png")
# this results in a 1595x1132 image

# Now make the image twice as big, making all the fonts and lines
# bigger too.

F.set_size_inches( DefaultSize )# resetthe size
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test3.png", dpi = (200)) # change the dpi
# this also results in a 1595x1132 image, but the fonts are larger.

Salida:

using MPL version: 0.98.1
DPI: 80
Default size in Inches [ 8.  6.]
Which should result in a 640 x 480 Image
Size in Inches [ 16.  12.]
Size in Inches [ 16.  12.]

Dos notas:

  1. Los comentarios del módulo y la salida real difieren.

  2. Esta respuesta permite combinar fácilmente las tres imágenes en un archivo de imagen para ver la diferencia de tamaños.


66
2017-12-02 16:01



En caso de que esté buscando una forma de cambiar el tamaño de la figura en Pandas, podría hacerlo, por ejemplo:

df['some_column'].plot(figsize=(10, 5))

dónde df es un marco de datos de Pandas. Si desea cambiar la configuración predeterminada, puede hacer lo siguiente:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))

41
2017-09-29 12:54