Bokeh 双 Y 轴绘图:如何实现独立 Y 轴缩放


bokeh 双 y 轴绘图:如何实现独立 y 轴缩放

本文介绍如何在 Bokeh 绘图中实现双 Y 轴,并允许用户独立缩放其中一个 Y 轴,保持另一个 Y 轴固定。通过使用 extra_y_ranges 和 Range1d 创建双 Y 轴,并调整缩放行为,我们可以实现更灵活的数据可视化。

在 Bokeh 绘图中,有时我们需要展示具有不同量纲或取值范围的数据。这时,双 Y 轴就显得非常有用。然而,默认情况下,缩放操作会同时影响两个 Y 轴。本文将介绍如何创建双 Y 轴绘图,并允许用户独立缩放其中一个 Y 轴,保持另一个 Y 轴的刻度范围固定。

创建双 Y 轴绘图

首先,我们需要使用 extra_y_ranges 和 Range1d 创建双 Y 轴。extra_y_ranges 允许我们在 Bokeh 图中添加额外的 Y 轴范围,而 Range1d 则用于定义这些范围的起始和结束值。

以下是一个创建双 Y 轴绘图的示例代码:

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

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

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

# 创建额外的 Y 轴范围
p.extra_y_ranges = {"y2_range": Range1d(start=0, end=10)}

# 添加线条到绘图
line1 = p.line(x, y1, color="n*y", legend_label="Line 1")
line2 = p.line(x, y2, color="firebrick", y_range_name="y2_range", legend_label="Line 2")

# 添加第二个 Y 轴
p.add_layout(p.extra_y_ranges['y2_range'], 'right')

# 设置轴标签
p.yaxis.axis_label = "Y1"
p.extra_y_ranges['y2_range'].start = 0
p.extra_y_ranges['y2_range'].end = 10
p.yaxis.formatter.precision = 0
p.yaxis.major_label_orientation = "vertical"
p.right.axis_label = "Y2"

# 显示绘图
show(p)

这段代码首先创建了两个列表 y1 和 y2 作为要绘制的数据。然后,创建了一个 Bokeh 图形对象 p。关键部分是 p.extra_y_ranges = {"y2_range": Range1d(start=0, end=10)},这定义了一个名为 "y2_range" 的额外 Y 轴范围,并设置了其起始值为 0,结束值为 10。 line2 通过 y_range_name="y2_range" 与这个额外的 Y 轴关联。 最后,使用 p.add_layout 将这个额外的 Y 轴添加到绘图的右侧。

实现独立 Y 轴缩放

默认情况下,Bokeh 的缩放工具会同时影响所有的 Y 轴。为了实现独立缩放,我们需要自定义缩放行为。虽然Bokeh本身没有直接提供独立缩放的选项,但可以通过修改坐标轴的 renderers 属性来间接实现。然而,根据提供的信息,直接修改 renderers 属性并不能达到目的。

ViiTor AI ViiTor AI

一个强大的多语言AI语音合成和视频转译平台

ViiTor AI 9414 查看详情 ViiTor AI

一个可行的解决方案是使用 J*aScript 回调函数来控制 Y 轴的范围。

注意事项:

  • 使用 J*aScript 回调函数会增加代码的复杂性。
  • 确保你的 Bokeh 版本支持 J*aScript 回调函数。
  • 由于原始问题已经通过外部链接解决,建议查阅相关链接以获取更详细的解决方案。

总结:

通过 extra_y_ranges 和 Range1d,我们可以方便地创建双 Y 轴绘图。 虽然 Bokeh 默认的缩放行为会同时影响所有 Y 轴,但我们可以通过调整 renderers 属性或使用 J*aScript 回调函数来实现独立 Y 轴缩放,从而满足更复杂的可视化需求。根据原始问题提供的信息,查阅相关链接是获取更详细解决方案的最佳途径。

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


# 相关链接  # 柴文磊seo博客分享  # 黄岛网站优化软件  # 怀柔区特殊网站建设调整  # 平山网站快照优化多少钱  # 柳州seo公司方便火星  # 网站推广了吗  # 珠海seo推广多少钱  # 成都小程序网站建设  # 产后营销活动推广方案  # 搜索淘宝关键词网站排名  # 是一个  # 值为  # javascript  # 其中一个  # 可以通过  # 遍历  # 如何实现  # 迭代  # 迷思  # 回调  # 数据可视化  # 工具  # 回调函数  # java 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: MongoDB聚合管道:高效统计列表中各项的文档数量  J*a实现任务清单管理_集合框架综合入门练手  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  圆通快递官方入口不需要登录 在线查询入口快速查询  t3出行如何使用微信支付  B站怎么开|直播| B站|直播|申请需要什么条件【新手必看】  Win11如何分屏操作_Win11多窗口分屏技巧  飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  解决PHP MySQL数据库更新无响应:SQL查询语法错误解析  PHP utf8_encode 字符编码转换陷阱与解决方案  NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  易车网官网直达入口 易车网在线登录入口  哔哩哔哩在线观看入口 B站官网免费进入  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  Windows 11怎么删除恢复分区_Windows 11使用Diskpart命令强行删除分区  圆通快递官网入口查询单号 手机版官方查询入口  小红书网页版怎么进 小红书网页版通用入口  如何配置VS Code作为您Git操作的默认编辑器  自定义你的VS Code状态栏,监控关键信息  小红书如何引流到私信?引流到私信有用吗?  火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解  鸣潮历史学家灯塔位置一览  Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南  键盘测试软件哪个好_键盘故障检测工具推荐  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  《跳跳舞蹈》循环播放方法  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  一加 Ace 6V 快充无法启用_一加 Ace 6V 充电优化  掌握产品代码正则表达式:避免常见陷阱与精确匹配  《狐友》联系客服方法  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  极兔快递官网查询入口手机版 手机极兔快递登录查询入口官方  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  《爱笔思画x》魔棒工具抠图教程  《长生:天机降世》火塔小怪大全  sublime如何处理超大文件不卡顿 _sublime打开大日志文件技巧  如何使用 Optional 类型并满足 Pylint 的类型检查  漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接  《tt语音》超级玩家开通方法  在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明  Python高效统计字典嵌套列表值在目标列表中的出现次数  快手极速版在线体验区 快手极速版网页体验入口  如何使用 composer 和 aop-php 实现 AOP 编程?  纯CSS实现滚动时动态时间轴线条颜色填充效果  51漫画网实时入口 51漫画网页版官方免费漫画入口  《下一站江湖2》武器获取方法  淘口令快速解析技巧  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码 

 2025-11-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.