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
相关产品推荐
相关产品推荐

