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

Python&Bokeh新手求助:如何用YAML文件覆盖默认主题?

嗨!作为Bokeh新手,用YAML自定义主题其实没那么复杂,我一步步给你讲清楚怎么做:

用YAML文件自定义Bokeh折线图主题的步骤

1. 确保你的lp.yaml主题文件格式正确

Bokeh的主题YAML是围绕模型属性来定义的,核心是attrs字段,你可以针对不同的Bokeh组件(比如图表、线条、坐标轴等)设置自定义样式。先给你一个简单的lp.yaml示例,你可以根据需求修改:

attrs:
  Figure:
    background_fill_color: "#f5f5f5"  # 图表背景色
    border_fill_color: "#e8e8e8"      # 图表边框背景色
    title_text_color: "#2c3e50"       # 标题颜色
  Line:
    line_color: "#e74c3c"             # 折线颜色
    line_width: 3                     # 折线宽度
  Axis:
    axis_line_color: "#34495e"        # 坐标轴线条颜色
    major_label_text_color: "#7f8c8d" # 刻度标签颜色
  Legend:
    background_fill_color: "#ffffff"  # 图例背景色
    border_line_color: "#bdc3c7"      # 图例边框颜色

2. 在Jupyter Notebook中加载并应用主题

接下来在你的Notebook代码里,需要加载这个YAML文件,并把它应用到你的折线图上。以下是完整的示例代码:

# 导入需要的Bokeh模块
from bokeh.plotting import figure, show, output_notebook
from bokeh.themes import Theme

# 让Bokeh图表在Notebook内显示(这一步很重要,否则会弹出新窗口)
output_notebook()

# 加载自定义YAML主题文件
# 如果lp.yaml和你的Notebook在同一个文件夹,直接写文件名即可;否则写完整路径
theme = Theme(filename="lp.yaml")

# 准备折线图数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 5, 3]

# 创建折线图对象
p = figure(
    title="我的自定义主题折线图",
    x_axis_label="X轴",
    y_axis_label="Y轴",
    width=600,
    height=400
)
p.line(x, y, legend_label="示例折线")

# 显示图表时指定使用我们的自定义主题
show(p, theme=theme)

3. 注意事项

  • 路径问题:如果你的lp.yaml不在Notebook的同一目录下,一定要写正确的相对路径或绝对路径,比如Theme(filename="./themes/lp.yaml")或者Theme(filename="/Users/xxx/notebooks/lp.yaml")。
  • 覆盖默认属性:YAML里定义的属性会覆盖Bokeh的默认主题属性,没定义的部分会保留默认值,所以你只需要写你想修改的样式就行。
  • 模型对应关系:要确保YAML里的模型名称(比如Figure、Line)和Bokeh的官方模型名称一致,不然样式不会生效。

这样操作下来,你的折线图就会应用lp.yaml里定义的自定义样式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:46:36