去除HoloViews中的Bokeh Logo

5

你是否可以在使用HoloViews生成的图表中移除Bokeh标志?我没有任何反感...只是在某些报告中显示它可能没有意义。:)

我知道在Bokeh中可以轻松实现:

p = bkp.figure(...)
...
p.toolbar.logo = None

更新

这是我的导入部分:

import sys
import os

import numpy as np
np.random.seed(0)
import random
random.seed(0)

import pandas as pd
from bokeh.models import HoverTool
import holoviews as hv
hv.extension("bokeh", logo=False)
4个回答

3

目前(截至holoviews 1.9.1),直接关闭工具栏中bokeh标志的选项并未直接呈现,但您可以提供所谓的finalize_hook来直接修改该图。 您可以在ElementPlot上直接添加此类钩子以进行全局设置:

def disable_logo(plot, element):
    plot.state.toolbar.logo = None
hv.plotting.bokeh.ElementPlot.finalize_hooks.append(disable_logo)

或将其设置为绘图选项:

hv.Curve(range(10)).opts(plot=dict(finalize_hooks=[disable_logo])

快速评论。这适用于我创建的叠加图(例如,A * B * C),但不适用于叠加对象组成的合成图(例如,(C + D)。cols(1),其中C = A1 * B1,D = A2 * B2)。在后一种情况下,我仍然看到Bokeh标志。 - Bruno

2
hv.extension("bokeh",logo=False)

谢谢你的快速回复,詹姆斯!但是对我没有用……在Jupyter笔记本中创建叠加图后,我仍然看到Bokeh标志。顺便说一下,我昨天参加了你的网络研讨会,非常棒!我很兴奋能够学习更多关于HoloViews和Datashader的知识。继续保持良好的工作! - Bruno
目前我们不直接公开此选项,您可以通过添加相应的钩子来全局禁用它。请参阅我的帖子以获取详细信息。 - philippjfr
糟糕!我没有仔细阅读问题;logo=False是针对笔记本顶部的标志,而不是您所询问的每个图表上的标志。 - James A. Bednar

2

如果要在更复杂的布局中删除 Bokeh 的标志,我认为您需要将其呈现到 Bokeh 图形中,然后使用 Bokeh 的本地方法来删除它。

layout = C + D
plot = renderer.get_plot(layout)
p = plot.state
p.children[0].toolbar.logo = None
show(p)

Remove Bokeh Logo for Layout


谢谢!你是如何定义变量renderer的? - Bruno
2
renderer = hv.renderer('bokeh') - Andrew
我创建了一个扩展模块,以更直接的方式来实现这一点。 Mod(logo=False).apply(bar) https://holoext.readthedocs.io/en/latest/examples/modifying_toolbar_tools.html - Andrew

2

1) 这与philippjfr的答案几乎相同,但使用钩子略微缩短:

def remove_bokeh_logo(plot, element):
    plot.state.toolbar.logo = None

hv.Scatter(df).opts(hooks=[remove_bokeh_logo])


2) 还有安德鲁的答案,将图形呈现为bokeh,然后删除标志

from bokeh.plotting import show

hv_plot = hv.Scatter(df)
bokeh_plot = hv.render(hv_plot, backend='bokeh')
bokeh_plot.toolbar.logo = None

show(bokeh_plot)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接