обновить диаграмму с помощью ipywidgets: - PullRequest
0 голосов
/ 12 мая 2018

Я использую seaborn на ноутбуке jupyter и хотел бы, чтобы ползунок обновил график. Мой код выглядит следующим образом:

from ipywidgets import interact, interactive, fixed, interact_manual
import numpy as np
import seaborn as sns
from IPython.display import clear_output

def f(var):
    print(var)
    clear_output(wait=True)
    sns.distplot(list(np.random.normal(1,var,1000)))

interact(f, var=10);

Проблема: при каждом перемещении ползунка график дублируется. Как мне вместо этого обновить график?

1 Ответ

0 голосов
/ 13 мая 2018

Участки Seaborn должны обрабатываться как обычный участок matplotlib. Поэтому вам нужно использовать plt.show(), чтобы отобразить его, как описано в этом ответе , например.

В сочетании с магической командой * 1006, это прекрасно работает для меня:

%matplotlib inline
from ipywidgets import interact
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

def f(var):
    sns.distplot(np.random.normal(1, var, 1000))
    plt.show()
interact(f, var = (1,10))

Другим решением было бы обновить данные графика вместо перерисовки нового, как описано здесь: https://stackoverflow.com/a/4098938/2699660

...