¿Cómo cambio el tamaño de las figuras dibujadas con Matplotlib?

Resuelto tatwright asked hace 15 años • 0 respuestas

¿Cómo cambio el tamaño de la figura dibujada con Matplotlib?

tatwright avatar Dec 02 '08 04:12 tatwright
Aceptado

figurete dice la firma de llamada:

from matplotlib.pyplot import figure

figure(figsize=(8, 6), dpi=80)

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

Jouni K. Seppänen avatar Mar 12 '2009 12:03 Jouni K. Seppänen

Si ya tienes la figura creada, puedes usar figure.set_size_inchespara ajustar el tamaño de la figura:

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)

Además, como Erik Shilts mencionó en los comentarios, también puede utilizar figure.set_dpipara "[es]tablecer la resolución de la figura en puntos por pulgada"

fig.set_dpi(100)
Pete avatar Nov 29 '2010 17:11 Pete

Usando 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é utilizando plt.plot(), por ejemplo, puede establecer una tupla con ancho y alto.

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

Esto es muy útil cuando traza en línea (por ejemplo, con IPython Notebook ). Como señaló Asmaier , es preferible no poner esta declaración en la misma celda de las declaraciones de importaciones.

Para restablecer el tamaño global de la figura al valor predeterminado para gráficos posteriores:

plt.rcParams["figure.figsize"] = plt.rcParamsDefault["figure.figsize"]

Conversión a centímetros

La figsizetupla acepta pulgadas, por lo que si quieres ponerla en centímetros tienes que dividirlos entre 2,54. Echa un vistazo a esta pregunta .

G M avatar Jan 18 '2017 10:01 G M

Nota de obsolescencia:
según la guía oficial de Matplotlibpylab , ya no se recomienda el uso del módulo. Considere utilizar el matplotlib.pyplotmódulo en su lugar, como se describe en 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 de 5 pulgadas y su altura de 10 pulgadas .

Luego, la clase Figura usa esto como valor predeterminado para uno de sus argumentos.

tatwright avatar Dec 01 '2008 21:12 tatwright

En caso de que estés buscando una manera de cambiar el tamaño de la figura en Pandas , puedes hacer:

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

¿ Dónde dfhay un marco de datos de Pandas? O, para usar una figura o ejes existentes:

fig, ax = plt.subplots(figsize=(10, 5))
df['some_column'].plot(ax=ax)

Si desea cambiar la configuración predeterminada, puede hacer lo siguiente:

import matplotlib

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

Para obtener más detalles, consulte los documentos: pd.DataFrame.plot.

Kris avatar Sep 29 '2016 12:09 Kris

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

Aquí hay un script de prueba de la página anterior. Crea test[1-3].pngarchivos de diferentes tamaños de una 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.

Producción:

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 el resultado 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.

jfs avatar Dec 02 '2008 16:12 jfs