2010-07-09 14 views
8

Necesito obtener un diagrama que se ajuste automáticamente a los datos usando matplotlib. Este es el código que me dieron:autoescala Matplotlib

import matplotlib.pyplot as plt 
from matplotlib.collections import LineCollection 
.... 
lines = LineCollection(mpl.line_holder, colors=mpl.colorholder , linestyle='solid') 
plt.axes().add_collection(lines) 
plt.axes().set_aspect('equal', 'datalim') 
plt.draw() 
plt.show() 

Esto crea una trama, sin embargo, la ventana es siempre el mismo (0- ~ 0,8), no importa lo que los datos es que, incluso si todos los datos están fuera de ese ventana. La ventana resultante no tiene la capacidad de alejarse, solo en, por lo que este es un problema importante. No puedo encontrar ningún lugar donde se establezca ningún tipo de tamaño, ni puedo encontrar detalles sobre los valores predeterminados. Necesito la ventana para ajustar automáticamente los datos, pero no puedo encontrar ninguna función que lo haga (por alguna razón, autoscale_on (True) no lo hace). Los datos son muy variables, por lo que establecer límites estrictos no es una opción. ¿Cómo puedo hacer que esto se muestre correctamente?

Respuesta

10

No estoy seguro si esto es lo que quería, pero puedo cambiarlo si esto no era lo que estaba buscando.

import matplotlib.pyplot as plt 
from matplotlib.collections import LineCollection 

import pylab as p 

fig = plt.figure() 
pts1 = [] 
pts2 = [] 
for i in range(100): 
    pts1.append([i,i]) 
    pts2.append([-i-3,-i]) 
lines = LineCollection([pts1,pts2], linestyles='solid') 
subplt = fig.add_subplot(111,aspect='equal') 
subplt.add_collection(lines) 
subplt.autoscale_view(True,True,True) 
p.show() 

Espero que ayude.

+4

autoscale_view (True, True, True) corrigió el problema. Ahora si pudiera encontrar una explicación de lo que técnicamente hace en la horrible documentación. – Elliot

+0

Debería estar en algún lugar aquí: http://matplotlib.sourceforge.net/api/axes_api.html. La documentación no es muy buena sin embargo. – River

1

Eche un vistazo a Eli Bendersky's Website, específicamente this post. El ejemplo en la parte inferior de la publicación se puede descargar. Le permite establecer si el eje x seguirá la trama o permanecerá estático mientras que el eje y cambia con los datos.