【问题标题】:Bokeh / Holoviews saved .html is no longer interactive with zoom, pan, resetBokeh / Holoviews 保存的 .html 不再与缩放、平移、重置交互
【发布时间】:2020-04-12 13:09:28
【问题描述】:

我有一个应用程序,它使用 Holoviews 生成使用 Bokeh 渲染的热图。我从 Python 2.7 升级到 3.7 环境,保存的 .html 绘图不再支持平移、缩放或重置的能力。我之前保存了 .html 文件的版本,并在它们之间进行了文件比较,发现了 .html 文件中不再存在的几行。我将这些行从以前的版本复制到新版本中,并看到交互式功能现在再次起作用。编辑版本后,以下几行是我从旧版本复制到新版本的内容。

link rel="stylesheet" href="https://cdn.pydata.org/bokeh/release/bokeh-1.3.4.min.css"

link rel="stylesheet" href="https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.3.4.min.css"

link rel="stylesheet" href="https://cdn.pydata.org/bokeh/release/bokeh-tables-1.3.4.min.css"

这些似乎与 BokehJS 有关,但我无法弄清楚它们可能缺少什么以再次开始被包含在内。这是一个服务器应用程序,这些功能在服务器运行时工作。但是,它曾经在关闭服务器后和打开保存的 .html 文件时继续工作。

【问题讨论】:

  • 我在这里取得了一些进展,现在我可以保存 html 文件并让交互式工具继续工作。我正在使用 hv.save(plot, 'file_name.html', backend=bokeh)。我没有看到使用 backend 参数的其他示例,因此尝试将其删除。这似乎适用于保存的 .html 文件。但是,服务器应用程序用于自动打开浏览器窗口并显示 python 应用程序的绘图。当 python 应用程序停止服务器时,box_zoom 之类的交互元素曾经继续工作,但不再工作。

标签: zooming bokeh holoviews


【解决方案1】:

从来没有人期望 Bokeh Server 应用程序页面可以保存为正常运行的静态 HTML,如果这种情况在任何意义上都是如此,那么它就是意外和未定义的行为。

每当发生诸如平移或缩放之类的事情时,Bokeh 服务器应用程序页面都会尝试将这些更改传达给正在运行的 Bokeh 服务器(以便任何回调都可以运行,这就是 Bokeh 服务器的目的)。但是,如果您只是“保存”应用程序页面,那么所有这些通信尝试都不会成功,因为不再有服务器进程供该页面与之通信。我希望如果您查看浏览器 JS 控制台日志,您会看到很多关于失败连接、协议错误等的错误消息。

【讨论】:

  • 我同意 Holoviews DynamicMap 的情况。在这种情况下,我没有实现任何流或回调,也没有将它用作 DynamicMap 应用程序。对于名义上的情况,我的理解是 html 是使用嵌入式 JavaScript 创建的,以支持不依赖新数据的绘图的许多交互功能。
  • HV 角度我绝对不是很了解,我建议直接向 HV 开发人员询问他们的新 Discourse:discourse.holoviz.org
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2015-04-22
相关资源
最近更新 更多