Jupyter, ipywidgets, как обновить сюжет с помощью выпадающего меню - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть выпадающий список для конкретного диапазона данных, основанный на выпадающем значении.Тем не менее, он продолжает создавать новый график для вывода, а не обновлять тот же график.Пожалуйста, помогите, вот клетка.Я посмотрел пост, в котором я могу строить графики в Выводе, но он, похоже, ничего не делает.

from IPython.display import clear_output
out = widgets.Output()    
w = widgets.Dropdown(
    options=alist,
    description='List',
)
ax = plt.figure()


def on_change(change):
    global ax
    if change['name'] == 'value' and (change['new'] != change['old']):
        with out:
            ax = sns.boxplot(data = mydata[change['new']])
            plt.show()

w.observe(on_change)

display(w)
out

1 Ответ

0 голосов
/ 16 декабря 2018

Для определенных версий пакетов, которые я пробовал, 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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...