在单个图上更改holoviews扩展

时间:2019-01-17 19:22:11

标签: python holoviews

我通常使用=INDEX(header_row,SUMPRODUCT((names=specific_name)*(column_index))) 后端,但是我也希望能够绘制表面,这受bokeh后端的支持,但不受matplotlib的支持。有没有一种方法可以指定一个特定的图应该使用不同的后端进行渲染而无需更改用于后续图的后端?我可以做以下例如在Jupyter笔记本中:

bokeh
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") 进行渲染,而其他图的渲染不会受到影响?

1 个答案:

答案 0 :(得分:2)

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

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

现在,您可以使用output实用程序通过matplotlib(或按图显示)显示单个图:

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')