如果Bokeh有很多图表,输出文件非常大,系统变慢
我在用Bokeh这个工具。我非常喜欢Bokeh,因为它有很多图表,而且输出文件也很简单。
我在一家半导体公司工作,有时候需要分析半导体的数据。
我有很多数据,要制作很多图表,可能有1000到4000个图表!
我用Bokeh来制作图表,但Bokeh的速度很慢,我不知道为什么……
举个例子,我的数据有6000行,250列(是csv格式),我想绘制大约250列的图表。
我还用过matplotlib和numpy,源代码大概是这样的,跟Bokeh差不多:
rect(hist_array[cnt, param_num, 0], \
hist_array[cnt, param_num, 1]/2.0, \
0.01 * (hist_array[cnt, param_num, 0][2] - hist_array[cnt, param_num, 0][1]), \
hist_array[cnt, param_num, 1], \
y_range=Range1d(start=0,end=param_array[param_num, 1][:file_count].max()*1.1), \
x_range=Range1d(start=param_array[param_num, 2][:file_count].min(), end=param_array[param_num, 3][:file_count].max()), \
plot_width=1200, plot_height=400,
fill_color=colormap[cnt], \
line_color=colormap[cnt], \
#fill_alpha=0.1, \
#line_alpha=0.1, \
legend=file_name[4] + ' ' + tmpIndex[param_cnt])
我不知道为什么Bokeh这么慢,可能需要100秒。
1 个回答
5
因为Bokeh是在浏览器中运行的,所以最终还是会受到浏览器和JavaScript运行环境的性能限制。听起来你要绘制150万个点?这样直接嵌入的方式可能效果不太好。
不过,有一个解决办法:Bokeh服务器可以自动对你的数据进行降采样,对于某些图表类型,它会在浏览器中提供一个简化版本。当用户放大或移动视图时,服务器会再获取更多的数据。这意味着生成的HTML文件启动速度会很快,而且性能也会相当不错。
目前,降采样服务器还不在主分支中,而是在一个演示分支里。在下一个主要版本中,我们会把这个降采样的功能整合到主服务器里。如果你对现有的降采样功能感兴趣,可以发邮件到bokeh用户列表bokeh@continuum.io,我们可以在那儿继续讨论。