Изменить расширение holoviews на одном участке - PullRequest
0 голосов
/ 17 января 2019

Я обычно использую 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 Ответ

0 голосов
/ 17 января 2019

Если вы используете holoviews> = 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')
...