You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否旋转Bokeh图表的次级X轴标签?

如何旋转Bokeh图表X轴的次级标签

当然可以实现!下面分两种常见场景给出具体的操作方法:

场景1:基于FactorRange的多级分类轴

如果你的X轴是用FactorRange构建的多级标签(比如主标签是大类,次级标签是下属子类别),可以通过以下方式单独调整次级标签的倾斜角度:

  1. 先搭建基础图表结构(以分组柱状图为例):
from bokeh.plotting import figure, show
from bokeh.models import FactorRange, ColumnDataSource

# 定义多级因子:主标签是viral/non_viral,次级标签是子样本
factors = [("viral", "sample1"), ("viral", "sample2"), ("non_viral", "sample1"), ("non_viral", "sample2")]
source = ColumnDataSource(data=dict(
    x=factors,
    y=[10, 12, 8, 9]
))

p = figure(x_range=FactorRange(*factors), height=350, title="Sample Data")
p.vbar(x='x', top='y', width=0.9, source=source)
  1. 针对性调整次级标签的旋转角度:
# 获取X轴的因子刻度器
x_ticker = p.xaxis.ticker[0]
# 设置次级标签的倾斜角度(用弧度制,45度对应π/4≈0.785)
x_ticker.major_label_orientation = 0.785
# 若需要保持主标签垂直/水平,可单独调整主标签的方向:
# x_ticker.group_label_orientation = 1.57  # 90度垂直,对应π/2
  1. 最后展示图表:
show(p)

场景2:手动添加次级标签(更灵活的自定义)

如果你的次级标签是通过LabelSet手动添加的,直接在创建标签时设置angle参数即可:

from bokeh.models import LabelSet

# 准备次级标签的数据源,对应每个柱子的位置
secondary_labels = ColumnDataSource(data=dict(
    x=[0.5, 1.5, 2.5, 3.5],
    text=["sub1", "sub2", "sub1", "sub2"]
))

# 创建标签集,设置倾斜角度和对齐方式
labels = LabelSet(x='x', y=-1, text='text', source=secondary_labels,
                  angle=0.785,  # 45度倾斜
                  text_align="right", text_baseline="middle")
p.add_layout(labels)
show(p)

小提示

  • 角度参数默认用弧度制,如果你习惯用角度,可导入math模块用math.radians(45)转换。
  • 要是用Bokeh服务器做动态交互,在回调里调整标签样式时,记得正确引用对应的标签对象。

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

火山引擎 最新活动