新闻中心

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

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

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 属性并不能达到目的。

Musho Musho

AI网页设计Figma插件

Musho 76 查看详情 Musho

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

注意事项:

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

总结:

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

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


# 值为  # 营销网站推广联系方式  # 温州网站推广公司找哪家  # 怎么去网站推广员  # 贵阳网站建设比较好  # 汇成seo优化自动工具  # 本地网站优化好处是什么  # 威海营销推广招商  # 温州专业seo排名  # 网络推广网站需火19星  # SEO行业选择题推荐  # 情况下  # 是一个  # javascript  # 高分  # 相关链接  # 其中一个  # 有效地  # 可以通过  # 如何实现  # 回调  # 数据可视化  # 工具  # 回调函数  # java 


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


相关推荐: Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  在WordPress中通过REST API获取BasicAuth保护的远程文章  Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  Lar*el 8 多关键词数据库搜索优化实践  在Qt QML中通过Python字典动态更新TextEdit内容的教程  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】  c++如何实现单例设计模式_c++线程安全的单例模式写法  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  steam官方入口大全 steam账号注册及操作指南  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  html5 app怎么运行环境_配html5 app运行环境【教程】  如何仅使用CSS更改登录界面背景图像图标的颜色  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  BetterDiscord插件中安全更新用户简介的实践指南  QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  如何在Promise链中优雅地中断后续then执行  微信网页版官方入口教程 微信网页版网页版快速登录步骤  Flexbox布局实践:实现粘性导航栏与底部固定页脚  iCloud登录入口网页版 苹果iCloud官网登录  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  蛙漫移动版在线看 蛙漫手机浏览器直达入口  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  汽水音乐在线版入口_汽水音乐网页播放手册  win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  响应式容器内容自动缩放与宽高比维持教程  Golang如何优雅处理error_Golang error处理最佳实践总结  Lar*el DB::listen 事件中的查询执行时间单位解析  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  12306选座怎么选到临时改签座_12306改签选座策略与步骤 

搜索