新闻中心
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
AI网页设计Figma插件
76
查看详情
一个可行的解决方案是使用 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改签选座策略与步骤


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