我怎样才能让HoloViews绘图或Hvplot在Databricks上工作?
生成的情节也应保持所有的互动性。
如何在Databricks上使用HoloViews / hvPlot
Bokeh
file_html
将返回HTML+JS代码以提供你的数据的交互式绘图。总的HTML必须小于20MB。你的数据需要内联到你的HTML中,否则你可能会遇到CSRF错误。确保你已经安装了python
holoviews
、
bokeh
和
hvplot
软件包。例子。
import math
import numpy as np
import pandas as pd
import holoviews as hv
from bokeh.embed import components, file_html
from bokeh.resources import CDN
hv.extension('bokeh')
import hvplot
renderer = hv.renderer('bokeh').instance(fig='html', holomap='auto')
# see https://github.com/ioam/holoviews/issues/1819
def displayHoloviews(hv_plot, html_name="plot.html", width=1000, height=600, renderer=renderer):
plot = renderer.get_plot(hv_plot).state
setattr(plot, 'plot_width', width)
setattr(plot, 'plot_height', height)
displayHTML(file_html(plot, CDN, html_name))
index = pd.date_range('1/1/2000', periods=1000)
df = pd.DataFrame(np.random.randn(1000, 4), index=index, columns=list('ABCD')).cumsum()
displayHoloviews(hvplot.hvPlot(df).line(y=['A','B','C','D']))
Sander van den Oord
发布于
2021-04-20
0
人赞同
你可以
将你的HoloViews绘图保存为一个HTML文件,然后使用displayHTML()。
.
解决方案是受到这个博客的启发。
https://anitagraser.com/2020/02/02/first-working-movingpandas-setup-on-databricks/
这种方法的缺点是,你的html文件不应该变得太大,否则你可能会遇到保存笔记本的问题。
这里有一个
工作实例
:
# import libraries
import numpy as np
import pandas as pd
import holoviews as hv
import hvplot.pandas
# create sample date
df = pd.DataFrame(np.random.rand(50, 2), columns=['col1', 'col2'])
df['col3'] = np.random.randint(0, 2, 50)
# create holoviews scatter plot
hv_scatter = df.hvplot(kind='scatter', x='col1', y='col2', groupby='col3')
# save scatter plot as html
hv.save(hv_scatter, 'hv_scatter.html')
# assign html file to variable
with open('hv_scatter.html', 'r') as html_file:
html_scatter = html_file.read()
# display scatter plot
displayHTML(html_scatter)
作为一个替代方案,你也可以将你的情节渲染成Bokeh情节,然后使用这个笔记本的例子。
https://docs.databricks.com/notebooks/visualizations/bokeh.html
Skippy le Grand Gourou
发布于
2021-04-20
0
人赞同
你可以简单地使用
import holoviews as hv
your_plot = hv.Points(np.random.multivariate_normal((0,0), [[0.1, 0.1], [0.1, 1.0]], (1000,)))