Как я могу ускорить загрузку страниц графиков, созданных в Bokeh? - PullRequest
0 голосов
/ 19 ноября 2018

После того, как я запустил свой код, страница открывается, и в течение 13 секунд появляется пустая страница, и после этого ожидаемые графики.

Есть ли способ ускорить это?(13 секунд, к сожалению, для пользователя это слишком долго)

Код создает 44 графика в двух столбцах (2n цикл), различаются по параметру (1-й цикл), а затем отличаются по имени инструмента (3-й цикл)

Кроме того, если боке, не подходящий инструмент для этого, с радостью откроет способ построения интерактивных графиков, желательно с python

Это код:

dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%dT%H:%M:%S')

df = pd.read_csv("LUSU.csv",parse_dates=['PM_START_DATE'], date_parser=dateparse)

df.head()
print("time elapsed: {:.2f}s".format(time.time() - start_time))
x = df['PM_START_DATE']
y = df['TASK_VALUE']
tool=df['ENTITY']
tool_list=df['ENTITY'].unique()
param_list=df['PARAMETER'].unique()
#
print("time elapsed: {:.2f}s".format(time.time() - start_time))
colors = itertools.cycle(Spectral11)
output_file('LUSU.html', mode="cdn")
for i in range(0,44,2):
    row = []
    for _ in range(2):
        p = figure(title=param_list[i], x_axis_label='date', y_axis_label='chart value', x_axis_type="datetime", toolbar_location="below")
        for j in range(len(tool_list)):
            df1=((df['PARAMETER']==param_list[i] )& (df['ENTITY']==tool_list[j] ))
            source = ColumnDataSource(data=dict(x=x.loc[df1], y=y.loc[df1], tool=tool.loc[df1]))
            p.line(x='x', y='y',legend='tool', source=source)
            p.scatter(x='x', y='y',legend='tool',size=10,color=next(colors), source=source)
        p.add_tools(HoverTool(tooltips=[("Entity", "@tool"), ("Chart Value", "@y{%0.2f}"), ("Date", "@x{%F}")], formatters={"x": "datetime", "y": 'printf'}))
        #p.xaxis.formatter = DatetimeTickFormatter(days=["%m/%d/%Y"])
        p.legend.location = "top_right"
        p.legend.click_policy = "mute"
        row.append(p)
        i = i + 1
    grid.append(row)

fig=layout(grid)
reset_output()

show(fig)

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете попробовать использовать webGL, чтобы ускорить его. Это позволяет визуализировать глифы с помощью графического процессора.

figure(title=param_list[i], x_axis_label='date', y_axis_label='chart value', x_axis_type="datetime", toolbar_location="below", output_backend="webgl")

Дополнительная информация: https://bokeh.pydata.org/en/latest/docs/user_guide/webgl.html. Дальнейшее чтение о проблемах производительности Bokeh с большим количеством графиков: https://github.com/bokeh/bokeh/issues/6294.

...