在单个地块上更改全息图扩展

Change holoviews extension on a single plot

我通常使用 bokeh 后端,但我也希望能够绘制曲面,matplotlib 后端支持但 bokeh 不支持。有没有一种方法可以指定一个特定的情节应该使用不同的后端渲染而不改变用于后续情节的后端?我可以执行以下操作,例如在 Jupyter 笔记本中:

import holoviews as hv
hv.extension("bokeh")

# plots involving bokeh backend
surface = hv.Surface(np.sin(np.linspace(0,100*np.pi*2,10000)).reshape(100,100))
hv.extension("matplotlib")
surface
hv.extension("bokeh")
# more plots involving bokeh

但是比较不方便。有什么我可以做的吗

surface = surface.opts(extension="matplotlib")

以便此元素将使用 matplotlib 渲染,但渲染其他绘图将不受影响?

如果您使用的是 >=1.11.0 的全息视图,则可以使用 hv.output 实用程序。首先确保加载两个后端:

import holoviews as hv
hv.extension("bokeh", "matplotlib")
... # Various plots using bokeh

现在您可以使用 output 实用程序使用 matplotlib(或 plotly)显示单个绘图:

surface = hv.Surface(np.sin(np.linspace(0,100*np.pi*2,10000)).reshape(100,100))
hv.output(surface, backend='matplotlib')

如果您还必须为不同的后端提供自定义选项,您可以将后端指定为 .opts(或 .options 声明)的一部分:

hv.output(surface.opts(fig_size=200, backend='matplotlib'), backend='matplotlib')