Ошибка Bokeh: модель «Панель» не существует - PullRequest
0 голосов
/ 06 марта 2020

В ноутбуке Jupyter с bokeh версия 0.12.7 у меня есть 3 ячейки кода следующим образом

Ячейка 1

import pandas as pd
from bokeh.plotting import figure
from bokeh.io import output_file, show
from bokeh.plotting import ColumnDataSource
from bokeh.models import HoverTool
from bokeh.models import CategoricalColorMapper
from bokeh.layouts import row, column, gridplot
from bokeh.models.widgets import Panel, Tabs

df = pd.read_csv('Data/female_literacy_fertility.csv', thousands=',')

Ячейка 2

source1 = ColumnDataSource(df[df['Continent']=='ASI'])
p1 = figure(x_axis_label='fertility (children per woman)', y_axis_label='female literacy (% population)')
p1.circle('fertility', 'female literacy', source=source1)

source2 = ColumnDataSource(df[df['Continent']=='EUR'])
p2 = figure(x_axis_label='fertility (children per woman)', y_axis_label='female literacy (% population)')
p2.circle('fertility', 'female literacy', source=source2)

source3 = ColumnDataSource(df[df['Continent']=='AF'])
p3 = figure(x_axis_label='fertility (children per woman)', y_axis_label='female literacy (% population)')
p3.circle('fertility', 'female literacy', source=source3)

source4 = ColumnDataSource(df[df['Continent']=='LAT'])
p4 = figure(x_axis_label='fertility (children per woman)', y_axis_label='female literacy (% population)')
p4.circle('fertility', 'female literacy', source=source4)

row1 = [p1, p2]
row2 = [p3, p4]
layout1 = gridplot([row1, row2])
output_file('bokeh1.html')
show(layout1)

Ячейка 3

tab1 = Panel(child=p1, title='Latin America')
tab2 = Panel(child=p2, title='Africa')
tab3 = Panel(child=p3, title='Asia')
tab4 = Panel(child=p4, title='Europe')

layout2 = Tabs(tabs=[tab1, tab2, tab3, tab4])
output_file('bokeh2.html')
show(layout2)

Когда я управлял ячейками в порядке 1, 2, 3, все было хорошо. Но если снова запустить ячейку 2 (то есть 1, 2, 3, 2), я получу это сообщение об ошибке

Bokeh Error Model 'Panel' не существует. Это может быть связано с тем, что виджет или пользовательская модель не были зарегистрированы до первого использования.

Единственный способ преодолеть проблему - это перезапустить ядро ​​снова. Кто-нибудь знает в чем проблема и как ее исправить? Заранее спасибо.

...