Automatisch ylim en XLIM in Matplotlib

Ik plot gegevens in Python met behulp van MatPLotlib. Ik ben de gegevens van de plot bij het bijwerken op basis van sommige berekeningen en wil de YLIM en XLIM automatisch opnieuw worden ingeschakeld. In plaats daarvan is wat er gebeurt, de schaal is ingesteld op basis van de grenzen van de initiële plot. Een MWE is

import random
import matplotlib.pyplot as pyplot
pyplot.ion()
x = range(10)
y = lambda m: [m*random.random() for i in range(10)]
pLine, = pyplot.plot(x, y(1))
for i in range(10):
    pLine.set_ydata(y(i+1))
    pyplot.draw()

Het eerste plot-opdracht genereert een plot van [0,1]en ik kan alles prima zien. Aan het einde gaat de Y-data-array van [0,10)met de meeste groter dan 1, maar de Y-limieten van de figuur blijven [0,1].

Ik weet dat ik de limieten handmatig kan wijzigen met pyplot.ylim(...), maar ik weet niet waar ik ze moet veranderen. In de forlus, kan ik Pyplot vertellen om de limieten te schalen alsof het de eerste keer was geplot?


Antwoord 1, Autoriteit 100%

U moet de Datalim van de assen bijwerken en vervolgens de weergave van de assen op basis van de datalim vervolgens bijwerken. De appartementen zijn axes.relim()en ax.autoscale_view()-methode.
Uw voorbeeld ziet er dan uit:

import random
import matplotlib.pyplot as pyplot
pyplot.ion()
x = range(10)
y = lambda m: [m*random.random() for i in range(10)]
pLine, = pyplot.plot(x, y(1))
for i in range(10):
    pLine.set_ydata(y(i+1))
ax = pyplot.gca()
# recompute the ax.dataLim
ax.relim()
# update ax.viewLim using the new dataLim
ax.autoscale_view()
pyplot.draw()

Other episodes