You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bokeh v3.2.0工具栏工具图标修改失败问题求助

Bokeh工具栏图标修改失败的解决方案

你遇到的问题是因为当前Bokeh版本(2.4.x/3.x)已不再支持直接通过字符串名称指定内置图标,传递的字符串会被Bokeh当作本地文件路径解析,因此触发了文件找不到的错误。官方文档的旧版描述可能未及时更新,导致混淆。

1. 使用内置图标(正确方式)

需要从bokeh.icons模块导入对应的图标对象,而非传递字符串名称:

''' 修正后的最小示例
'''
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import BoxSelectTool
from bokeh.icons import box_zoom  # 导入内置图标对象

output_notebook()
x = list(range(11))
y = x

p = figure(width=300, height=300)
p.circle(x, y, size=12, alpha=0.8, color="#53777a")
p.add_tools(BoxSelectTool(icon=box_zoom))  # 传入图标对象

show(p)

2. 使用自定义CSS类

若要通过CSS类自定义图标,需使用bokeh.models.CustomIcon类,指定css_classes参数,而非直接将类名传给icon:

from bokeh.models import CustomIcon

# 定义自定义图标
custom_icon = CustomIcon(css_classes=["my-icon-class"], size=16)
p.add_tools(BoxSelectTool(icon=custom_icon))

同时需要在Jupyter中加载对应的CSS样式:

from IPython.display import display, HTML
display(HTML("""
<style>
.my-icon-class {
    background-image: url('path/to/your/icon.svg') !important;
    background-size: contain;
}
</style>
"""))

3. 使用图片路径

直接传递图片路径时,需确保路径正确(相对路径、绝对路径或在线URL均可):

# 本地图片路径
p.add_tools(BoxSelectTool(icon="path/to/your/icon.png"))
# 在线URL
p.add_tools(BoxSelectTool(icon="https://example.com/icon.svg"))

内容的提问来源于stack exchange,提问作者Art Gertner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:10:09