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

如何在Bokeh绘图区域外渲染LabelSet以显示时序图末尾数值

解决方法

只需调整3处配置即可实现LabelSet在绘图区域外正常显示:

  • 创建画布时给右侧预留足够的空白空间,避免标签超出画布范围被截断
  • 关闭LabelSet默认的绘图区裁剪限制,允许内容展示在绘图区外
  • 微调标签水平偏移量,让文本正好落在y轴对应位置

修改后完整代码

import pandas as pd
from bokeh.io import output_notebook
output_notebook()
from bokeh.plotting import figure, show
from bokeh.models import LabelSet, ColumnDataSource
from bokeh.sampledata.stocks import MSFT

df = pd.DataFrame(MSFT)[:50]
df["date"] = pd.to_datetime(df["date"])

p = figure(
    x_axis_type="datetime", width=1000, toolbar_location='left',
    title = "MSFT Candlestick", y_axis_location="right",
    min_border_right=80  # 新增:给右侧预留80像素空白放标签
)

p.line(df.date, df.close)
ds = ColumnDataSource({'x': [df.date.iloc[-1]], 'y': [df.close.iloc[-1]], 'text': ['  ' + str(df.close.iloc[-1])]})
ls = LabelSet(
    x='x', y='y', text='text', source=ds,
    clip='off',  # 新增:关闭绘图区裁剪
    x_offset=10,  # 新增:向右偏移10像素,刚好到y轴区域
    text_baseline='middle'  # 新增:让文本和y值垂直居中对齐
)
p.add_layout(ls)

show(p)

你可以根据自己的文本长度调整min_border_right和x_offset的数值,适配不同的显示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:04