2009-11-05 11 views
8

¿Podemos controlar dónde Matplotlib coloca las cifras en la pantalla?Disposición de múltiples figuras utilizando Matplotlib

Quiero generar cuatro figuras (en cuatro ventanas separadas) que no se superpongan.

+0

Un poco más de información sería útil. que OS? Supongo que no es suficiente tener cuatro ejes en una figura. ¿Pero por qué? ¿Qué hace que cuatro ventanas separadas sean preferibles? ¿Necesita que las tramas sean interactivas/animadas? – Paul

Respuesta

0

No está utilizando show() y Matplotlib solo. La solución más simple puede ser usar savefig(..) y usar su visor de imágenes del sistema operativo favorito. Si necesita interactividad con las tramas, Matplotlib ofrece backends.

0

La manera más fácil que conozco de hacer esto es hacer la ventana para la figura en su aplicación GUI preferida, y luego poner la figura matplotlib en esta ventana. Hay un montón de ejemplos de cómo hacer esta inserción usando diferentes marcos de GUI here.

Las muestras de código pueden parecer un poco complicadas, pero en su mayoría es un texto estándar donde solo tendrá que modificar unas pocas líneas.

8

De IPython puede hacer lo siguiente:

figure() 
get_current_fig_manager().window.wm_geometry("400x600+20+40") 

o de manera equivalente en una secuencia de comandos de Python:

import pylab as pl 
pl.figure() 
pl.get_current_fig_manager().window.wm_geometry("400x600+20+40") 
pl.show() 

Tenga en cuenta que esto supone que está utilizando el backend TkAgg.

+0

Esto es exactamente lo que necesitaba. Gracias. Agregué las siguientes dos líneas al frente de su script para que funcione en Mac: >>> import matplotlib; >>> matplotlib.use ('TkAgg') – David

+0

+1: excelente de conocer (y mejor que mi sugerencia). – tom10

+2

Si es la respuesta correcta para usted, márquela aceptada. –

3

También es posible utilizar la interfaz IPython con el backend Qt para lograr un resultado similar:

import matplotlib 
import pylab as pl 
f1 = pl.figure() 
f_manager = pl.get_current_fig_manager() 
f_manager.window.move(600, 600) 
pl.show() 

Con f_manager que básicamente tienen un objeto PyQt4 que le permite modificar las propiedades de la ventana como desee.

Cuestiones relacionadas