使用hvplot Interactive在浏览器中渲染循环,并另存为html

问题描述 投票:0回答:1

我正在尝试遵循这个示例笔记本,特别是它绘制 x,y 网格并在时间维度上循环/滚动的绘图部分。

ds.air.interactive.sel(time=pnw.DiscreteSlider).plot()

我遇到了两个问题。首先,我想在 Spyder IDE 中运行此代码,它不支持内联小部件。根据我在这里发现的其他一些问题,解决方案似乎是在浏览器窗口中呈现交互式小部件。我环顾了一些地方,例如this question,但我似乎找不到任何与此处创建的

hvplot.xarray.XArrayInteractive
对象一起使用的东西。所以我的第一个问题是如何让它们在浏览器窗口中呈现。

我的第二个问题是如何将这些循环保存为稍后可以打开的html文件。我尝试使用教程here,但是当我尝试保存它时,出现以下错误。

ValueError: HoloViews pane does not support objects of type 'XArrayInteractive'.

似乎在这两种情况下,使用这种“XArrayInteractive”类型可能会导致问题。我并没有被限制使用这种方法,如果有另一种方法来制作我想要的循环,我对此持开放态度。

谢谢

python python-xarray interactive hvplot
1个回答
0
投票

我想出了如何让它在 Spyder 中工作。以下是来自 https://hvplot.holoviz.org/ 的完整代码示例,显示了使其在 Spyder 中工作的附加代码行:

import hvplot.xarray
import panel as pn
import xarray as xr
hv.extension('bokeh')
da = xr.tutorial.open_dataset('air_temperature').air
w_quantile = pn.widgets.FloatSlider(name='quantile', start=0, end=1)
w_time = pn.widgets.IntSlider(name='time', start=0, end=10)

app = da.interactive(loc='left') \
.isel(time=w_time) \
.quantile(q=w_quantile, dim='lon') \
.hvplot(ylabel='Air Temperature [K]', width=500)

app.layout().show(threaded=True) # displays the interactive dashboard
app.layout().save("dashboard.html", embed=True) # saves the html file

最后两行是秘密。交互式命令返回一个 hvplot.xarray.XArrayInteractive 对象,该对象不适用于您引用的第一个链接中描述的方法。 app.layout() 命令返回一个 panel 对象;您可以使用它在 Spyder 中进行绘图。最后一个链接中有更多关于此的信息。

© www.soinside.com 2019 - 2024. All rights reserved.