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

287

Me encontré con este ejemplo en el sitio web de Matplotlib. Me preguntaba si era posible aumentar el tamaño de la figura.

Lo intenté con

f.figsize(15,15)

Pero no hace nada.

Brian
fuente

Respuestas:

526

Si ya tiene el objeto figura, use:

f.set_figheight(15)
f.set_figwidth(15)

Pero si usa el comando .subplots () (como en los ejemplos que está mostrando) para crear una nueva figura, también puede usar:

f, axs = plt.subplots(2,2,figsize=(15,15))
Rutger Kassies
fuente
12
también hay fig.set_size_inchesque establecer la altura y el ancho juntos
Francesco Montesano
1
Esto no funciona, puede establecer la altura a lo que desee, pero nunca será más grande que su monitor.
2
Esto no tiene que hacer nada con su monitor. ¿Qué pasa si sale a un png? ¿Estás diciendo que nunca puede ser más grande que la resolución de pantalla? Es la combinación de tamaño en pulgadas con el dpi que determina el tamaño en píxeles.
Rutger Kassies
incluir figsize en la llamada a subplots () no parece funcionar. llamar a f.set_figheight, sin embargo, funciona.
Vicki B
¿Es posible cambiar el tamaño de la subtrama en sí sin cambiar el tamaño del higo?
Alexis.Rolland
38

Alternativamente, cree un figure()objeto usando el figsizeargumento y luego use add_subplotpara agregar sus subtramas. P.ej

import matplotlib.pyplot as plt
import numpy as np

f = plt.figure(figsize=(10,3))
ax = f.add_subplot(121)
ax2 = f.add_subplot(122)
x = np.linspace(0,4,1000)
ax.plot(x, np.sin(x))
ax2.plot(x, np.cos(x), 'r:')

Ejemplo simple

Los beneficios de este método son que la sintaxis está más cerca de las llamadas que en subplot()lugar de subplots(). Por ejemplo, las subtramas no parecen admitir el uso de a GridSpecpara controlar el espaciado de las subtramas, pero ambos subplot()y add_subplot()do.

tortuga acuática
fuente
10
¿Alguna posibilidad de agregar 'tamaño' a ax y ax2 por separado?
M. Gopal
2
Si entiendo correctamente, ¿desea establecer el tamaño relativo de los dos ejes? En ese caso, creo que está buscando esta pregunta: stackoverflow.com/questions/10388462/…
aquirdturtle