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

如何在Bokeh绘图中将图例放置在绘图区域外部?

在Bokeh中将图例放置在绘图区域外部

嘿,这问题我熟!要把Bokeh绘图的图例移到画布外面,其实只需要几步简单的设置就行,我给你拆解清楚:

首先提个小建议:Bokeh新版本里更推荐用legend_label参数指定图例名称,代替你代码里的legend,兼容性和可读性更好。所以你的循环代码可以调整成这样(假设每个line对象包含对应的名称和颜色):

# 先创建你的figure对象
p = figure()

for line in lines:
    # 替换成你实际的图例名称和颜色,比如line.name、line.color
    p.line(x='x', y='y', source=source, legend_label=line.name, color=line.color)

接下来就是关键的图例位置设置:

核心步骤:将图例添加到绘图外部

Bokeh的figure对象自带add_layout()方法,专门用来把图例(或其他组件)放到绘图区域的外部。你只需要指定放置方位即可:

# 把图例放到右侧外部,也可以换成'left'/'above'/'below'对应左/上/下方位
p.add_layout(p.legend, 'right')

优化显示效果(可选)

如果图例条目较多或者样式不符合需求,你还可以做这些调整:

  • 调整绘图边距:避免图例和绘图内容挤在一起,给外部留出足够空间:
    # 上、右、下、左的边距,单位为像素
    p.margin = (50, 150, 50, 50)
    
  • 设置图例样式:比如添加标题、调整条目间距、限制最大高度(超过会自动出现滚动条):
    p.legend.title = '数据系列'
    p.legend.spacing = 10  # 图例条目之间的间距
    p.legend.max_height = 300  # 图例最大高度,超过显示滚动条
    
  • 添加交互功能:比如点击图例即可隐藏对应线条:
    p.legend.click_policy = "hide"
    

这样设置完,你的图例就会乖乖待在绘图区域外面,不会遮挡线条内容啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:53:19