Matplotlib – Cómo eliminar una línea o curva específica

Quiero eliminar una línea específica en un gráfico de varias líneas. A continuación se muestra un ejemplo que no es suficiente para mí porque elimina solo la última línea trazada y no la línea que quiero eliminar. ¿Cómo puedo hacer eso? ¿Cómo puedo abordar una línea específica (por nombre, por número, por referencia) en todo el progtwig y eliminar esa línea?

self.axes.lines.remove(self.axes.lines[0]) 

Casi todas las funciones de trazado devuelven una referencia al objeto de artist creado, por ejemplo:

 ln, = plot(x, y) # plot actually returns a list of artists, hence the , im = imshow(Z) 

Si tiene la referencia, puede eliminar un artista a través de la función remove (doc) , por ejemplo:

 ln.remove() im.remove() 

Si no desea guardar la referencia de todas las líneas explícitamente pero conoce el índice de la línea que desea eliminar, puede usar el hecho de que maptplotlib las almacena por usted.

 self.axes.lines 

es una lista de matplotlib.lines.Line2D . Así que para eliminar, por ejemplo, la segunda línea dibujada que puedes hacer.

 self.axes.lines[1].remove() 

Tenía la misma necesidad y, para mí, resultó más ordenado agregar una identificación a la serie de datos y eliminarla más adelante al encontrar la serie (colección) con la identificación dada.

 def add_series(x, id): plt.plot(x, gid = id) def remove_series(id): for c in plt.collections: if c.get_gid() == id: c.remove() 

El código genera una respuesta escalonada para un sistema de segundo orden con poca superficie. El código también se puede utilizar para ilustrar la superposición de gráficos. El código genera y muestra gráficamente, la respuesta para dos valores del parámetro constante de tiempo. El código también ilustra la creación del cometa en un bucle for.

 import numpy as np import matplotlib.pyplot as plt The following programme runs on version 3.6. Code generates a pair of lines and the line 2 is removed in a for loop which simulates a comet effect pts=100 t2 = np.linspace(0.0,5.0,pts) t2=(t2/50) tm=t2*(10**3) nz=t2.size tc=np.linspace(0.8,2.5,2) nz=tc.size for n in range (nz): print(tc[n]) resp = 1 - np.exp(-tc[n]*tm*10**-3*50) * np.cos(2*np.pi*50*tm*10**-3) for m in range(pts): plt.xlim(0,100) plt.ylim(0,2) plt.xlabel('Time,in milliseconds',fontsize=12) plt.ylabel('Respose',fontsize=12) plt.title('Underdamped Second Order System Step Response',fontsize=14) line1,=plt.plot(tm[0:m+1],resp[0:m+1],color='black',linewidth=0.2) line2,=plt.plot(tm[m],resp[m],marker='o',color='red',markersize=5) ax = plt.gca() plt.pause(0.02) ax.lines.remove(line2) plt.grid('on') plt.show()