新闻中心

Bokeh 绘图:实现双 Y 轴独立缩放控制

2025-11-04
浏览次数:
返回列表

bokeh 绘图:实现双 y 轴独立缩放控制

本文介绍了如何在 Bokeh 绘图中实现双 Y 轴的独立缩放控制。通过设置 y_range 和 extra_y_ranges,并结合 Bokeh 的交互工具,可以实现对不同 Y 轴的单独缩放,从而更灵活地展示和分析数据。

在 Bokeh 中创建具有多个 Y 轴的绘图可以有效地展示具有不同比例或单位的数据。然而,默认情况下,缩放操作会影响所有 Y 轴。为了实现对不同 Y 轴的独立控制,需要对 Bokeh 的 Range 对象和交互工具有更深入的理解。

核心思路

实现双 Y 轴独立缩放的关键在于:

  1. 定义独立的 Y 轴范围: 使用 Range1d 创建独立的 Y 轴范围,并将其分配给主 Y 轴 (y_range) 和额外的 Y 轴 (extra_y_ranges)。
  2. 控制缩放行为: Bokeh 的缩放工具默认会影响所有 Y 轴。需要检查并配置相关工具的行为。

实现步骤

以下是一个简化的示例,展示了如何使用 Bokeh 创建具有独立缩放 Y 轴的绘图:

VALL-E VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

VALL-E 134 查看详情 VALL-E
from bokeh.plotting import figure, show
from bokeh.models import Range1d, LinearAxis

# 创建绘图对象
p = figure(width=600, height=400)

# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [6, 7, 2, 4, 5]
y2 = [2, 3, 4, 5, 6]

# 定义第一个 Y 轴的范围
y1_range = Range1d(start=0, end=10)
p.y_range = y1_range

# 绘制第一条线
line1 = p.line(x, y1, color="blue", legend_label="Line 1")

# 定义第二个 Y 轴的范围
y2_range = Range1d(start=1, end=7)
p.extra_y_ranges = {"y2": y2_range}

# 添加第二个 Y 轴
p.add_layout(LinearAxis(y_range_name="y2"), 'right')

# 绘制第二条线
line2 = p.line(x, y2, color="red", legend_label="Line 2", y_range_name="y2")

# 调整缩放工具 (可选,根据具体需求)
# p.tools[0].y_range = y1_range  # 如果有默认的缩放工具,将其限制到第一个 Y 轴

# 显示绘图
show(p)

代码解释:

  • Range1d 用于定义每个 Y 轴的独立范围。
  • extra_y_ranges 是一个字典,用于存储额外的 Y 轴范围。
  • LinearAxis 用于添加额外的 Y 轴到绘图中,并将其与相应的范围关联。
  • y_range_name 用于将数据系列与特定的 Y 轴范围关联。
  • p.tools[0].y_range = y1_range 这行代码是可选的,但很重要。如果你的绘图默认包含一个缩放工具(通常是 WheelZoomTool 或 BoxZoomTool),你需要显式地将其 y_range 属性设置为你想要控制的 Y 轴的范围。否则,默认情况下,缩放工具可能会影响所有 Y 轴。 你需要根据你的具体情况,找到对应的缩放工具并设置其 y_range。

注意事项:

  • 在使用 add_periodic_callback 实时更新绘图时,需要确保每次更新都使用正确的 Y 轴范围。
  • 如果使用自定义的缩放工具,需要确保其行为符合预期,并正确地更新 Y 轴的范围。
  • 不同的 Bokeh 版本可能在 API 上略有差异,请参考官方文档。

总结:

通过合理地使用 Range1d、extra_y_ranges 和 Bokeh 的交互工具,可以轻松实现对双 Y 轴绘图的独立缩放控制。 关键在于理解每个组件的作用,并根据具体的需求进行配置。 掌握这些技巧,可以创建更灵活、更强大的数据可视化应用。

以上就是Bokeh 绘图:实现双 Y 轴独立缩放控制的详细内容,更多请关注其它相关文章!


# 数据可视化  # 惠州绍兴网站建设公司  # 更灵活  # 命令行  # 关键在于  # 图像处理  # 可选  # 第二个  # 将其  # 是一个  # 自定义  # 递归  # red  # 工具  # SEO怎么快速出效果  # 泸州网络推广网站建设  # php网站建设项目教程  # Seo2的含义  # 营销会议音乐推广方案  # 铜仁营销推广培训学校有哪些  # 商洛关键词seo优化  # 葫芦岛全网营销推广费用  # 如皋餐厅网站建设 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接  C++如何生成随机数_C++ random库使用方法与范围设置  蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接  机器学习中对数变换预测结果的反向还原  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  J*aScript中管理异步API调用:确保操作顺序与数据一致性  如何仅使用CSS更改登录界面背景图像图标的颜色  qq游戏免费畅玩入口_qq游戏电脑版快速启动  动漫花园资源网使用步骤_动漫花园资源网下载流程  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  照顾宝贝2小游戏点击立即在线玩  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器  深入理解J*a链表中的IPosition接口与使用  苹果手机如何防止被恶意App追踪  192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台  Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】  网易大神账号申诉需要多久_网易大神账号申诉流程说明  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  内存检查:在VS Code中调试C++时的内存视图  百度网盘网页版入口 百度网盘网页版官方登录网址  c++中为什么推荐使用using替代typedef_c++现代化类型别名  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求  印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】  Go语言中JSON数据解码与字段访问指南  C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图  实现全屏滚动与导航点:专业教程  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  Golang指针如何与map组合使用_Golang map指针组合实践  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  c++ 命名空间怎么用 c++ namespace使用指南  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询  必由学官方登录入口 必由学教师学生账号快速访问  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  将HTML Canvas内容转换为可上传的图像文件(File对象)  解决Python logging 中 datefmt 导致时间戳固定不变的问题  Go Martini框架:动态服务解码后的图片内容  excel如何生成目录 excel一键生成工作表目录超链接  小米14应用无法联网原因分析_小米14网络权限修复  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池 

搜索