Python 如何在Databricks上使用HoloView/hvPlot

Python 如何在Databricks上使用HoloView/hvPlot,python,databricks,holoviews,hvplot,Python,Databricks,Holoviews,Hvplot,如何使HoloViews绘图或Hvplot在Databrick上工作 生成的绘图还应保持所有交互性。您可以将HoloViews绘图保存为HTML文件,然后使用displayHTML() 该解决方案的灵感来源于此博客: 这种方法的缺点是html文件不应该太大,否则保存笔记本时可能会遇到问题 下面是一个工作示例: # import libraries import numpy as np import pandas as pd import holoviews as hv import hvp

如何使HoloViews绘图或Hvplot在Databrick上工作


生成的绘图还应保持所有交互性。

您可以将HoloViews绘图保存为HTML文件,然后使用displayHTML()
该解决方案的灵感来源于此博客:

这种方法的缺点是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绘图,然后使用此笔记本的示例:

Bokeh
文件\u html
将返回html+JS代码以提供数据的交互式绘图。HTML总量必须小于20MB。您的数据需要内联到HTML中,否则您可能会遇到CSRF错误。确保已安装python
holoviews
bokeh
hvplot
软件包。例如:

导入数学
将numpy作为np导入
作为pd进口熊猫
将全息视图导入为hv
从bokeh.embed导入组件,文件\u html
从bokeh.resources导入CDN
高压扩展(“bokeh”)
导入hvplot
renderer=hv.renderer('bokeh')。实例(fig='html',holomap='auto')
#看https://github.com/ioam/holoviews/issues/1819
def displayHoloviews(hv_plot,html_name=“plot.html”,宽度=1000,高度=600,渲染器=渲染器):
绘图=渲染器。获取绘图(hv\U绘图)。状态
setattr(绘图,“绘图宽度”,宽度)
setattr(绘图,‘绘图高度’、高度)
显示html(文件\ html(绘图、CDN、html \名称))
索引=pd.日期范围('1/1/2000',期间=1000)
df=pd.DataFrame(np.random.randn(1000,4),index=index,columns=list('ABCD')).cumsum()
显示全息视图(hvplot.hvplot(df).line(y=['A','B','C','D']))

您只需使用

import holoviews as hv

your_plot = hv.Points(np.random.multivariate_normal((0,0), [[0.1, 0.1], [0.1, 1.0]], (1000,)))

renderer = hv.renderer("bokeh")
displayHTML(renderer.html(your_plot))
但是,如果使用
displayHTML()
的AIU阻止了
decimate()
datashader
,它将只显示最初渲染的绘图版本。其他答案也是如此,我不确定目前是否存在在DataBricks上保持可伸缩性的解决方案(我对这样的解决方案非常感兴趣) !).