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

