
本文介绍如何在 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, showfrom 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="navy", 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 = 0p.extra_y_ranges['y2_range'].end = 10p.yaxis.formatter.precision = 0p.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 属性并不能达到目的。
图像转图像AI
利用AI轻松变形、风格化和重绘任何图像
65 查看详情
一个可行的解决方案是使用 JavaScript 回调函数来控制 Y 轴的范围。
注意事项:
使用 JavaScript 回调函数会增加代码的复杂性。确保你的 Bokeh 版本支持 JavaScript 回调函数。由于原始问题已经通过外部链接解决,建议查阅相关链接以获取更详细的解决方案。
总结:
通过 extra_y_ranges 和 Range1d,我们可以方便地创建双 Y 轴绘图。 虽然 Bokeh 默认的缩放行为会同时影响所有 Y 轴,但我们可以通过调整 renderers 属性或使用 JavaScript 回调函数来实现独立 Y 轴缩放,从而满足更复杂的可视化需求。根据原始问题提供的信息,查阅相关链接是获取更详细解决方案的最佳途径。
以上就是Bokeh 双 Y 轴绘图:如何实现独立 Y 轴缩放的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/571538.html
微信扫一扫
支付宝扫一扫