Elimine los diagtwigs de Matplotlib anteriores en la misma celda en Jupyter Notebook con widgets interactivos

Este es solo un pequeño problema que me ha estado molestando por un tiempo.

Tengo un dataframe de pandas que consta de todas las variables continuas. Quiero dibujar un diagtwig de dispersión (utilizando matplotlib) para cualquier par de variables elegidas, haciendo uso de los widgets interactivos en Jupyter también.

Digamos que los datos tienen 3 columnas numéricas: ‘a’, ‘b’ y ‘c’.

Hasta ahora tengo estas líneas de códigos:

def g(x,y): plt.scatter(x, y) interactive_plot = interactive(g, x=['a','b','c'], y=['a','b','c']) interactive_plot 

Y funcionan bien, ya que producen un diagtwig de dispersión cada vez que alterno con los cuadros desplegables para x e y, y selecciono un par de variables de las 3 variables disponibles. Sin embargo, el problema aquí es que las plots anteriores producidas no se borran antes de que se muestre una nueva plot. En otras palabras, matplotlib no actualiza el gráfico en la figura existente, sino que simplemente astack gráficos / figuras uno encima del otro. Entonces, si cambio la elección de pares de variables 10 veces, obtendré 10 gráficos de dispersión, que no es lo que quiero.

¿Podría alguien ayudarme con esto?

Gracias por adelantado.

Puede agregar plt.show() al final de su función. Esto vuelve a colocar el gráfico en la misma celda en lugar de agregar uno nuevo.

 import numpy as np import pandas as pd import matplotlib.pyplot as plt from ipywidgets import interactive %matplotlib inline columns=['a','b','c'] data = np.cumsum(np.random.rand(10,3),axis=1) df = pd.DataFrame(data,columns=columns) def g(x,y): plt.scatter(df[x], df[y]) plt.show() interactive_plot = interactive(g, x=columns, y=columns) interactive_plot 

introduzca la descripción de la imagen aquí