ylim xlim set_xlim matplot length change python matplotlib

python - set_xlim - Automáticamente reventa ylim y xlim en Matplotlib



set xlim (1)

Estoy trazando datos en Python usando matplotlib. Estoy actualizando los datos de la trama en base a algunos cálculos y quiero que el ylim y xlim se vuelvan a escalar automáticamente. En cambio, lo que sucede es que la escala se establece en función de los límites de la gráfica inicial. Un MWE es

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

El primer comando de la trama genera una trama desde [0,1] y puedo ver todo muy bien. Al final, la matriz de datos y va desde [0,10) con la mayor parte mayor que 1 , pero los límites y de la figura permanecen [0,1] .

Sé que puedo cambiar los límites manualmente usando pyplot.ylim(...) , pero no sé a qué cambiarlos. En el bucle for , ¿puedo decirle a pyplot que escala los límites como si fuera la primera vez que se traza?


Deberá actualizar el dataLim de los ejes, y luego actualizar el viewLim de los ejes según el dataLim. Los métodos adecuados son los métodos axes.relim() y ax.autoscale_view() . Su ejemplo entonces se ve como:

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