运行代码后,将打开该页面,并在13秒钟内显示空白页面,然后显示预期的图。
有没有办法加快速度? (13秒,用户明智的选择太长了)
代码在两列(2n循环)中生成44个图,不同参数(第1个循环)不同,然后不同刀具名称(第3个循环)
如果bokeh(不是合适的工具)会很高兴地开放,以听取一种绘制交互式图的方法,最好是使用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)
答案 0 :(得分:0)
您可以尝试使用webGL加快速度。 这允许字形通过GPU渲染。
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。 有关大量散景的散景性能问题的进一步阅读,https://github.com/bokeh/bokeh/issues/6294。