Matplotlib set_data para el gráfico de la barra de errores

Los objetos line2D de Matplotlib, como los devueltos por una llamada a plot , tienen un método conveniente, set_data , que me permite actualizar rápidamente los valores trazados por una sola línea sin afectar el rest de la ttwig o el formato de la línea.

 #sample plot from matplotlib.pyplot import plot p = plot(arange(10),arange(10))[0] #now update the data p.set_data(arange(10),arange(10)+2) draw() 

¿Hay alguna forma relativamente simple (pocas líneas de código) de hacer lo mismo con un gráfico de errorbar ? Me gustaría poder configurar una ttwig complicada con texto variado, flechas, líneas, etc., y luego alternar rápidamente la parte de la barra de errores de la ttwig a través de diferentes conjuntos de datos.

El objeto devuelto por la errorbar de errorbar parece ser bastante complejo y hasta ahora mis bashs de eliminar y volver a dibujar han fallado.

Gracias a la ayuda de @tacaswell . A continuación se muestra la función de python que puede actualizar xerr y yerr , así como los datos x_data y y_data y para el trazado de la línea de base:

 def adjustErrbarxy(self, errobj, x, y, x_error, y_error): ln, (errx_top, errx_bot, erry_top, erry_bot), (barsx, barsy) = errobj x_base = x y_base = y xerr_top = x_base + x_error xerr_bot = x_base - x_error yerr_top = y_base + y_error yerr_bot = y_base - y_error errx_top.set_xdata(xerr_top) errx_bot.set_xdata(xerr_bot) errx_top.set_ydata(y_base) errx_bot.set_ydata(y_base) erry_top.set_xdata(x_base) erry_bot.set_xdata(x_base) erry_top.set_ydata(yerr_top) erry_bot.set_ydata(yerr_bot) new_segments_x = [np.array([[xt, y], [xb,y]]) for xt, xb, y in zip(xerr_top, xerr_bot, y_base)] new_segments_y = [np.array([[x, yt], [x,yb]]) for x, yt, yb in zip(x_base, yerr_top, yerr_bot)] barsx.set_segments(new_segments_x) barsy.set_segments(new_segments_y) 

El primer parámetro de entrada ( self es para la clase python) es el controlador de trazado de la errorbar ya creado, que también es el objeto cuyas propiedades deben actualizarse; x e y son las matrices numpy actualizadas que deben mostrarse los valores promedio a lo largo de los ejes x e y ; los últimos dos parámetros x_error y y_error son los rangos de la errorbar calculados para las matrices x e y . Si solo es necesario actualizar las x_base y_base , x_base y y_base deberían ln.get_xdata() como ln.get_xdata() y ln.get_ydata() , respectivamente.

Hasta ahora, la solución para la actualización de la matplotlib de matplotlib en matplotlib es realmente no trivial, espero que sea mucho más fácil en las versiones futuras.