Bokeh双Y轴绘图如何实现单个Y轴的独立缩放

来源:站长论坛作者:不吃香菜头衔:草根站长
导读:本期聚焦于小伙伴创作的《Bokeh双Y轴绘图如何实现单个Y轴的独立缩放》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Bokeh双Y轴绘图如何实现单个Y轴的独立缩放》有用,将其分享出去将是对创作者最好的鼓励。

在Bokeh的双Y轴绘图场景中,默认的交互缩放行为是同时作用于两个Y轴,当我们需要单独调整某一个Y轴的显示范围,而不影响另一个Y轴的数据展示时,就需要对Y轴的缩放配置进行自定义设置。Bokeh本身提供了灵活的交互工具配置能力,通过修改工具的关联轴参数即可实现单个Y轴的独立缩放。

Bokeh双Y轴绘图如何实现单个Y轴的独立缩放

核心实现原理

Bokeh的交互工具(如滚轮缩放、框选缩放)默认会绑定到图表的所有轴,要实现单个Y轴独立缩放,核心思路是:为需要独立缩放的Y轴单独创建专属的缩放工具,并且让该工具仅关联目标Y轴,不关联另一个Y轴和其他轴。

关键配置点有两个:

  • 使用WheelZoomToolBoxZoomTool时,通过dimensions参数指定缩放方向为垂直方向(仅影响Y轴)
  • 通过scales参数指定该缩放工具仅作用于目标Y轴,不作用于其他轴

完整实现代码示例

以下代码演示了创建双Y轴图表,并且仅让右侧Y轴支持独立缩放的实现过程:

from bokeh.plotting import figure, show
from bokeh.models import LinearAxis, Range1d, WheelZoomTool

# 创建基础图表,默认左侧Y轴
p = figure(width=800, height=400, title="双Y轴单个轴独立缩放示例")

# 添加第一条数据,使用左侧Y轴
p.line([1, 2, 3, 4, 5], [10, 20, 30, 40, 50], color="blue", legend_label="左侧数据")

# 配置右侧Y轴
p.extra_y_ranges["right_y"] = Range1d(start=0, end=100)
p.add_layout(LinearAxis(y_range_name="right_y", axis_label="右侧Y轴"), 'right')

# 添加第二条数据,使用右侧Y轴
p.line([1, 2, 3, 4, 5], [60, 70, 80, 90, 100], color="red", y_range_name="right_y", legend_label="右侧数据")

# 创建仅作用于右侧Y轴的滚轮缩放工具
right_y_zoom = WheelZoomTool(dimensions="height", scales={"y": p.extra_y_ranges["right_y"]})

# 创建仅作用于左侧Y轴的滚轮缩放工具
left_y_zoom = WheelZoomTool(dimensions="height", scales={"y": p.y_range})

# 清空默认工具,添加自定义工具
p.tools = [right_y_zoom, left_y_zoom]

show(p)

代码参数说明

参数说明
dimensions设置为"height"时,缩放工具仅影响垂直方向(Y轴),设置为"width"仅影响水平方向(X轴),"both"则同时影响两个方向
scales字典类型参数,键为轴类型("x"或"y"),值为要绑定的轴对象,这里指定仅绑定目标Y轴
extra_y_ranges用于存储额外Y轴的范围配置,键为Y轴名称,值为Range1d对象

注意事项

如果需要禁用某个Y轴的缩放,只需要不把对应的缩放工具绑定到该轴即可。另外,框选缩放工具BoxZoomTool的配置方式和滚轮缩放工具一致,只需要把WheelZoomTool替换为BoxZoomTool,同时调整scales参数即可实现框选独立缩放的效果。

当图表存在多个Y轴时,建议为每个需要独立交互的Y轴都创建专属的缩放工具,避免默认工具的全局绑定导致缩放行为不符合预期。

Bokeh双Y轴绘图独立缩放Y轴配置数据可视化修改时间:2026-07-22 09:03:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。