2010-07-09 10 views
8

Potrzebuję uzyskać wykres, który automatycznie dopasuje dane przy użyciu matplotlib. Jest to kod Dostałam:Matplotlib autoscale

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() 

To tworzy fabułę, jednak okno jest zawsze taka sama (0- ~ 0,8) bez względu na to, co jest dane, nawet jeśli wszystkie dane, które znajduje się poza okno. Wynikowe okno nie ma możliwości pomniejszenia, tylko w, więc jest to poważny problem. Nie mogę znaleźć nigdzie miejsca, w którym ustawiono jakiekolwiek rozmiary, ani też nie mogę znaleźć szczegółów na temat domyślnych ustawień. Potrzebuję okna do automatycznego dopasowania danych, ale nie mogę znaleźć żadnej funkcji, która to robi (z jakiegoś powodu autoscale_on (True) tego nie robi). Dane są bardzo zmienne, więc ustawienie twardych limitów nie jest opcją. Jak mogę to poprawnie wyświetlić?

Odpowiedz

10

Nie jestem pewien, czy to, co chciałeś, ale mogę to zmienić, jeśli nie było to, czego szukałeś.

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() 

Nadzieję, że pomaga.

+4

autoscale_view (True, True, True) naprawiono problem. Teraz, gdybym mógł znaleźć wyjaśnienie tego, co technicznie robi w okropnej dokumentacji. – Elliot

+0

Powinien być gdzieś tutaj: http://matplotlib.sourceforge.net/api/axes_api.html. Dokumentacja nie jest jednak zbyt dobra. – River

1

Spójrz na Eli Bendersky's Website, w szczególności this post. Przykład na dole postu można pobrać. Umożliwia ustawienie, czy oś x będzie podążać za działką, czy pozostanie statyczna, podczas gdy oś y zmieni się wraz z danymi.