Для определенных версий пакетов, которые я пробовал, ipywidgets, собирающие выходные данные, похоже, не работает с matplotlibЯ не уверен, что это уместно, но существует старая проблема , упомянутая в 2017 году. Одним из жизнеспособных решений является использование clear_output
, чтобы очистить все выходные данные и перерисовать все следующим образом:
from IPython.display import display, clear_output
import ipywidgets as widgets
import seaborn as sns
mydata = {'a': range(3),
'b': range(4),
'c': range(5)}
default = 'b'
sns.boxplot(data=mydata[default])
w = widgets.Dropdown(
options=mydata.keys(),
value = default,
description='List',
)
display(w)
def on_change(change):
if change['name'] == 'value' and (change['new'] != change['old']):
clear_output()
display(w)
sns.boxplot(data = mydata[change['new']])
w.observe(on_change)
При выборе / изменении выпадающего меню выход будет «мигать», когда все будет очищено и перерисовано.Я надеюсь, что это подходит для вашего конкретного случая использования.
Мои версии пакета:
ipykernel 5.1.0 py37h39e3cac_0
ipython 7.2.0 py37h39e3cac_0
ipython_genutils 0.2.0 py37_0
ipywidgets 7.4.2 py37_0
jupyter 1.0.0 py37_7
jupyter_client 5.2.3 py37_0
jupyter_console 6.0.0 py37_0
jupyter_core 4.4.0 py37_0
matplotlib 3.0.2 py37h5429711_0
seaborn 0.9.0 py37_0
widgetsnbextension 3.4.2 py37_0