我们正在尝试构建一个web应用程序--Dashboard--在DJango上显示不同的交互式图表(包括单击回调、获取新数据等),并使用Bokeh +Holoview+ Datashader。
由于数据非常大,并且可能有10+ 100万个点,所以我们使用的是datashader。我们可以从Bokeh +Holoview+ Datashader的后端获得一个静态html,并使用Django REST api将其传递给前端:
views.py
import numpy as np
import holoviews as hv
import datashader as ds
from dask import dataframe as dd
from bokeh.io import show, curdoc
from bokeh.layouts import layout
from bokeh.models import Slider, Button
from holoviews.operation.datashader import datashade
renderer = hv.renderer('bokeh').instance(mode='server')
def home(request):
def plot_info(y_col):
from vaex import dataframe as datafm
df_dask = dd.read_parquet(r"C:\Dropbox\1mln.parquet", engine='pyarrow',
columns=['nest11', 'nest21', 'first_element', 'second_element', 'timestamp'])
df_dask['timestamp'] = dd.to_datetime(df_dask.timestamp, unit='ns')
return hv.Curve((df_dask['timestamp'], df_dask[y_col]))
def bearer():
stream = hv.streams.Stream.define('y-axis', y_col="nest11")()
dmap = hv.DynamicMap(plot_info, streams=[stream])
vmap = datashade(dmap).opts(width=1200, height=600, responsive=True)
html = renderer.static_html(vmap)
return html
context = {
'seq_num': bearer(),
}
return render(request, 'home/welcome.html', context)效果很好。但是,由于我们使用了Datashader,所以数据是在静态html中聚合和转换的,当我们放大时,我们不会从端获取我们正在寻找的数据。为此,我猜我们需要Bokeh服务器。
我的疑问是:(由于使用Datashader必须用于大型数据集)
发布于 2020-08-04 21:24:16
https://stackoverflow.com/questions/63253999
复制相似问题