全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-690-7320

Bokeh Plot:如何独立控制双Y轴的缩放

bokeh plot:如何独立控制双y轴的缩放

本文介绍了在Bokeh中创建具有双Y轴的绘图,并实现独立控制每个Y轴的缩放功能。通过正确配置`extra_y_ranges`和使用`callbacks`,可以实现只缩放其中一个Y轴,而保持另一个Y轴的范围固定,从而更灵活地展示数据。

在Bokeh中创建具有双Y轴的绘图是一种常见的需求,例如,当需要在同一图表中展示具有不同量纲或数量级的数据时。然而,默认情况下,Bokeh的缩放工具会同时影响所有的Y轴。本教程将介绍如何实现独立控制双Y轴的缩放,即只缩放其中一个Y轴,而保持另一个Y轴的范围固定。

创建双Y轴绘图

首先,我们需要创建一个包含双Y轴的Bokeh绘图。这可以通过使用extra_y_ranges参数来实现。

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.line(x, y1, color="n*y", legend_label="Line 1")

# 创建第二个Y轴的范围
p.extra_y_ranges = {"y2": Range1d(start=0, end=10)}

# 添加第二个Y轴的数据
p.line(x, y2, color="firebrick", legend_label="Line 2", y_range_name="y2")

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

show(p)

在上面的代码中,我们首先创建了一个figure对象。然后,我们使用p.line()函数添加了第一条线的数据。为了创建第二个Y轴,我们使用了p.extra_y_ranges参数,并指定了第二个Y轴的范围。然后,我们再次使用p.line()函数添加了第二条线的数据,并指定了y_range_name参数为"y2",以将这条线与第二个Y轴关联起来。最后,使用p.add_layout()添加第二个Y轴到绘图的右侧。

独立控制Y轴缩放

默认情况下,Bokeh的缩放工具会同时影响两个Y轴。要实现独立控制Y轴的缩放,我们需要使用callbacks。具体来说,我们可以监听缩放事件,并手动更新其中一个Y轴的范围,而保持另一个Y轴的范围不变。

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客

以下是一个示例代码:

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

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

# 创建绘图对象
p = figure(width=400, height=400, tools="wheel_zoom, pan, reset")

# 添加第一个Y轴的数据
line1 = p.line(x, y1, color="n*y", legend_label="Line 1")

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

# 添加第二个Y轴的数据
line2 = p.line(x, y2, color="firebrick", legend_label="Line 2", y_range_name="y2")

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

# 创建回调函数
callback = CustomJS(args=dict(y2_range=y2_range, y1_range=p.y_range), code="""
    // 获取缩放后的第一个Y轴的范围
    const start = y1_range.start;
    const end = y1_range.end;

    // 在这里可以添加逻辑来限制第二个Y轴的范围
    // 例如,保持第二个Y轴的范围不变
    // 或者根据第一个Y轴的范围来调整第二个Y轴的范围

    // 更新第二个Y轴的范围
    //y2_range.start = start;
    //y2_range.end = end;
""")

# 绑定回调函数到第一个Y轴的范围
p.y_range.js_on_change('start', callback)
p.y_range.js_on_change('end', callback)

show(p)

在这个例子中,我们首先创建了一个CustomJS对象,该对象包含一个J*aScript回调函数。该回调函数在第一个Y轴的范围发生变化时被触发。在回调函数中,我们可以获取缩放后的第一个Y轴的范围,并根据需要更新第二个Y轴的范围。在本例中,我们注释掉了更新y2_range的代码,这意味着第二个Y轴的范围将保持不变。

注意事项

  • 回调函数是在浏览器端执行的,因此需要使用J*aScript编写。
  • 回调函数可以访问Bokeh绘图对象和模型,但不能直接修改Python变量。
  • 过度使用回调函数可能会影响绘图的性能。

总结

通过正确配置extra_y_ranges和使用callbacks,可以在Bokeh中创建具有双Y轴的绘图,并实现独立控制每个Y轴的缩放功能。这种方法可以更灵活地展示数据,并提高用户体验。通过自定义callback函数,可以实现更加复杂的交互行为,例如,根据第一个Y轴的缩放比例来动态调整第二个Y轴的范围。

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


# 可以实现  # 软件营销推广渠道  # 抖音seo搜索效果分析  # 看网站建设需要啥条件  # 湖北网站优化推荐服务  # 根河微网站建设  # 苏州高效营销推广公司  # 鞍山网站优化服务  # 太原餐饮营销推广公司  # 百度营销如何关闭推广  # 牟平智能营销网站优化  # 更灵活  # 是一个  # 高分  # javascript  # 有效地  # 我们可以  # 其中一个  # 第一个  # 回调  # 第二个  # 浏览器端  # 工具  # 回调函数  # 浏览器  # js  # java  # python 


相关文章: qq游戏大厅官方下载_qq游戏免费下载安装入口  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  铁路12306的积分有效期是多久_铁路12306积分有效期说明  composer的"require-dev"部分是用来做什么的?  HTML空白字符处理机制:渲染、DOM与编码实践  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  理解Python模块与全局变量的作用域管理  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  基于多条件高效更新SQL表:利用CASE表达式优化业务逻辑  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  响应式容器内容自动缩放与宽高比维持教程  VS Code远程开发时如何处理文件权限问题  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  C++ string find函数返回值npos详解_C++字符串查找失败的判断条件  PDF文件体积过大处理_PDF压缩技巧详解  CSS布局中意外空白:解决padding-top导致的顶部间距问题  C++ map遍历方法大全_C++ map迭代器使用总结  Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  msn官网入口地址手机版 msn官方网站手机最新链接  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  Go语言中构建可靠数据存储的原子性与持久化策略  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  React列表渲染与独立状态管理:避免全局状态影响局部更新  zookeeper 都有哪些功能?  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  优化Log4j2控制台输出性能:解决异步日志瓶颈  《燕云十六声》两周内达九百万玩家!位居畅销榜第五  深入理解J*aScript中的B样条曲线与节点向量生成  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  韩剧圈正版入口页面_韩剧圈官网登录链接  快手网页版在线登录 快手网页版官网入口快速访问  Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组  Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  2026春节假期时间安排 2026春节假日查询  PHP实现即时文章发布与单次数据库写入:自提交模式教程  KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明  Lar*el Form Request 中唯一性验证更新操作的正确实践  德邦快递查询平台 德邦快递物流信息查询入口  excel如何生成目录 excel一键生成工作表目录超链接  Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】  单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分  ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。