Bokeh сервер сюжет не обновляет - PullRequest
0 голосов
/ 09 февраля 2020

LS, все ответы об одной и той же топи c не помогли мне решить мою проблему с обновлением. Я думаю, что это связано с dfs = df.sort_values ​​(by = ['E']). Я использую все последние версии библиотек. Примеры на веб-сайте bokeh отлично работают на моей конфигурации. Через кнопку обновления я хочу позволить пользователю выбрать предпочтительный порядок сортировки. Две другие кнопки сортировки будут добавлены, когда эта часть будет работать. Вот мой код:

import pandas as pd
from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource
from bokeh.layouts import gridplot
from bokeh.models import Button

df = pd.DataFrame(dict(A=["AMS", "LHR", "FRA", "PTY", "CGD"], S=[7,-5,-3,3,2], E=[8,3,-2,5,8], C=[5,2,7,-3,-4]))

source = ColumnDataSource(df)

options = dict(plot_width=300, plot_height=200,
               tools="pan,wheel_zoom,box_zoom,box_select,lasso_select")

button = Button(label="Change Sort to E")

p1 = figure(y_range=source.data['A'].tolist(), title="S", **options)
p1.hbar(y='A', right="S", height=0.2, source=source)


p2 = figure(y_range=source.data['A'].tolist(), title="E", **options)
p2.hbar(y="A", right="E", height=0.2, source=source)


p3 = figure(y_range=source.data['A'].tolist(), title="C", **options)
p3.hbar(y="A", right="C", height=0.2, source=source)


def update():
    dfs = df.sort_values(by=['E'])
    source.data = ColumnDataSource.from_df(dfs)


button.on_click(update)

p = gridplot([[button], [p1, p2, p3]], toolbar_location="right")

curdoc().add_root(p)

Я запускаю сервер через: bokeh serve --show app.py --port 5009

Большое спасибо за работу обновления.

1 Ответ

0 голосов
/ 10 февраля 2020

Если вы хотите изменить порядок вещей на категориальной оси, вы должны обновить диапазон . Порядок факторов на оси определяется в точности порядком факторов, которые вы конфигурируете для диапазона, поэтому вам нужно будет переупорядочить факторы в соответствии с желаемым порядком сортировки. Итак, что-то вроде:

p1.y_range.factors = new_sorted_factors

См.

https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html#sorted

для полного (автономного) примера.

...