【问题标题】:Bokeh, zoom only on single axis, adjust another axis accordingly散景,仅在单个轴上缩放,相应地调整另一个轴
【发布时间】:2021-12-07 06:35:27
【问题描述】:

如何使散景仅在一个轴上使用缩放并自动缩放对象,以便它们准确地占用给定的空间并在可缩放轴平行线的极值点上添加一些填充,同时将空白空间渲染到范围之外?

换句话说(或者确切地说是“疯狂技能”): Example plot.

这是最广泛用于股票绘图的,所以考虑一下我想用 Bokeh 复制 https://www.tradingview.com/chart/?symbol=FX:XAUUSD 的缩放行为。 提前谢谢你。

【问题讨论】:

  • 你能补充一些你想要的解释或例子吗?
  • 基本上,图片包含所有内容:1)当人使用缩放轮时,在 x 轴上绘制“拉伸”,然后在放大的 x 轴切片内查找极端 y 点,缩放y 轴使绘图占据整个垂直空间 + 添加一些填充,因此看起来不会令人讨厌。此行为主要用于股票图表,因此请查找 tradingview.com/chart/?symbol=FX:XAUUSD ,例如。

标签: javascript python plot bokeh


【解决方案1】:

仅使用“xwheel_zoom”工具在 X 轴上进行缩放:

from bokeh.plotting import figure
fig = figure(tools='xwheel_zoom', active_scroll='xwheel_zoom')

当第一个轴发生变化时,通过调用自定义 JavaScript 事件来自动缩放另一个 (Y) 轴。在这种情况下,您扫描可见数据并修改轴范围。如以下要点示例:https://gist.github.com/kernc/719918ada11298168efd956afc1a04a8

【讨论】:

【解决方案2】:

截至 Bokeh 0.12.7 没有任何内置功能可以做到这一点。自动量程始终覆盖整个数据集。没有选项可以仅在根据其他维度的范围当前可见的数据子集上进行自动测距。

可以扩展 Bokeh,因此可以想象您可以编写 DataRange1d 的自定义扩展子类,但这绝不是一件小事:

http://docs.bokeh.org/en/latest/docs/user_guide/extensions.html

但是,这似乎是一个合理的功能请求,因此我鼓励您提交 GitHub 问题以讨论将此功能直接添加到核心库:

https://github.com/bokeh/bokeh/issues

【讨论】:

  • 与 d3js(或任何其他 js 绘图库,因为我对 js 及其框架的了解相当肤浅)相比,如果我编写这样的扩展,我是否会对流式大数据有任何性能优势?
  • 我无法肯定地说。
【解决方案3】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
  • 2023-02-24
  • 2021-06-21
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多