1) Сначала вы делаете df.plot.bar()
дважды, что кажется немного избыточным, вы можете удалить его?
2) Я выполнил линейный профиль вашего примера кода, столбчатая диаграмма pandas берет Дольше всего, так что начните там, чтобы сделать функцию быстрее:
Line # Hits Time Per Hit % Time Line Contents
==============================================================
10 def plot(self, random_state):
11 1 1834.0 1834.0 0.2 plt.figure(figsize=[30,10])
12 1 2573.0 2573.0 0.2 df = pd.DataFrame(data=np.random.normal(size=200), columns=['prob'])
13 1 67474.0 67474.0 5.7 ax = plt.subplot(2, 1, 1)
14 1 997202.0 997202.0 83.5 df.plot.bar( y='prob', ax=ax);
15 # df.plot.bar()
16 # Plot Image
17 1 69439.0 69439.0 5.8 ax1 = plt.subplot(2, 4, 5);
18 1 5004.0 5004.0 0.4 ax1.imshow(np.random.uniform(size=[300,300]));
19
20 # Plot Explainability Figure
21 1 46301.0 46301.0 3.9 ax2 = plt.subplot(2, 4, 6);
22 1 3886.0 3886.0 0.3 ax2.imshow(np.random.uniform(size=[300,300]));
Смотрите здесь для описания
3) На ваш второй вопрос, используя интерактивный ipywidgets, окно вывода будет очистить, как только появится новое изображение. Сначала отображается ваш гистограмма, поэтому это приводит к очистке старого вывода, а затем вам нужно дождаться отображения следующих двух графиков.
4) Вы также можете сделать w = interactive(dp.plot, random_state=10, continuous_update=False)
, чтобы график происходит только тогда, когда вы позволяете go ползунка в определенной позиции, а не каждому значению, через которое вы перемещаете ползунок.