Я хочу изменить источник данных простого линейного графика в зависимости от того, что пользователь выбирает из выпадающего меню.
У меня есть 2 кадра данных, вес и возраст меня и моего парня.
my_weight = [60,65,70]
my_age = [21,22,25]
d_weight = [65,70,80]
d_age = [21,22,25]
me = pd.DataFrame(list(zip(my_weight, my_age)),
columns =['weight', 'age'], index=None)
dillon = pd.DataFrame(list(zip(d_weight, d_age)),
columns =['weight', 'age'], index=None)
Я превращаю эти два кадра данных в объекты ColumnDataSource, создаю свой график и линию, добавляю раскрывающийся список и jslink. Также есть демонстрационный слайдер, показывающий, как я могу изменить line_width моей линии.
from bokeh.models import ColumnDataSource
from bokeh.core.properties import Any, Bool, ColumnData
pn.extension()
source = ColumnDataSource(me, name="Me")
source2 = ColumnDataSource(dillon, name="Dillon")
# print("Me: ", source.data, "Dillon: ", source2.data)
plot = figure(width=300, height=300)
myline = plot.line(x='weight', y='age', source=source, color="pink")
width_slider = pn.widgets.FloatSlider(name='Line Width', start=0.1, end=10)
width_slider.jslink(myline.glyph, value='line_width')
dropdown2 = pn.widgets.Select(name='Data', options=[source, source2])
dropdown2.jslink(myline, value='data_source')
pn.Column(dropdown2, width_slider, plot)
Когда я запускаю этот код, я получаю ошибку
ValueError: expected an instance of type DataSource, got ColumnDataSource(id='5489', ...) of type str
с ошибкой, возникающей в разделе кода dropdown2
.
Что мешает коду распознавать source и source2 как объекты ColumnDataSource ()? Что означает полученный ColumnDataSource (id = '5489', ...) типа str ? Как это строка?