В настоящее время я использую Bokeh для создания интерактивного инструмента визуализации данных в блокноте Jupyter.Моя цель состоит в том, чтобы пользователь мог изменить данные, отображаемые на диаграмме рассеяния, что означает, что обновление графика должно обрабатывать как категориальные, так и числовые данные.Вот где я сталкиваюсь с проблемами.
Когда я изменяю тип данных для построения графика, точки на диаграмме рассеяния обновляются нормально, но тики оси и диапазон не обновляются (поэтому представление не обновляется правильно),Я попытался указать x_range и y_range, но это, похоже, не сработало.
Минимальный пример моей функции обновления:
def update(attr, old, new):
# this seems to work fine.
new_data = ColumnDataSource(dict=(x=x, y=y, c=c))
src.data.update(new_data.data)
# change type of y and x axes
# e.g. x_range goes from Range1d to FactorRange
p.x_range = FactorRange()
p.x_range.factors = sorted(set(source.data['x']))
# or y_range goes from FactorRange to Range1d
p.y_range = Range1d()
p.y_range.start = min(source.data['y'])
p.y_range.end = max(source.data['y'])
...
push_notebook(handle=p)
Может кто-нибудь помочь?Я довольно много гуглил, но пока не нашел решения.
Редактировать: Изменение x и y происходит от двух виджетов, кстати.
Редактировать 2: воспроизводимый примерhttps://gist.github.com/hmmartiny/d8b0596b4028de66bdc72e8848f10a7e