[FEATURE]: minimum autorange window
まだ誰も着手していません。
- 主要言語
- JavaScript
- スター
- 18.3k
- フォーク
- 2k
- 平均マージ
- 2日 12時間
- マージ済み PR(30日)
- 28
説明
Feature request: “minimum autorange window” (default range, expand only when data exceed bounds) for live graphs
Problem / Motivation
We are building a live (streaming) graph with Plotly.js. When using autorange: true, the y-axis can become too tightly zoomed around very small values. This makes it hard to follow the signal comfortably because the scale constantly re-adjusts to tiny changes.
At the same time, we need to see outliers immediately: if a value suddenly exceeds a threshold, the plot should expand so the outlier is visible and operators can react.
So we want a y-axis behavior like:
- Default to a “stable” range (e.g.
[-10, 10]) while data stay inside it (prevents over-zooming). - If any new data point goes below -10 or above 10, automatically expand the axis beyond that window (so outliers are visible).
- In other words: do not shrink inside the window, but do expand outside of it.
Why current options don’t solve it
layout.yaxis.autorangeoptions.clipmin/clipmaxcap the autorange result.
They prevent the axis from expanding beyond the clip values, which is the opposite of what we need (we want expansion beyond the threshold).autorangeoptions.minallowed/maxallowed(and axis-level allowed options) are hard limits / exact values and also do not provide “minimum window but expandable”.- The current workaround is to compute data min/max and call
Plotly.relayout()repeatedly, but this creates boilerplate, can fight user interactions, and is easy to get wrong for multi-axis / overlay cases.
Proposed feature
Add an autorange option that enforces a minimum visible window while still allowing expansion when data exceed the window.
Possible API (one of these, open to better naming):
yaxis.autorangeoptions.minwindow: [-10, 10]yaxis.autorangeoptions.minrange: 20(minimum span)- or similar
Proposed semantics
When autorange: true:
- Compute normal autorange
[amin, amax]from data (with existing padding rules). - Enforce: the final range must include the data, and must be at least the configured minimum window/span.
- If data are within the minimum window, use the minimum window exactly (stable view).
- If data exceed the window, expand as needed to include the data (outliers become visible).
Examples
Given minwindow: [-10, 10]:
- data in
[-3, 5]-> range should be[-10, 10] - data in
[-12, 5]-> range should expand to include-12(e.g.[-12, 10]plus padding if applicable) - data in
[-3, 22]-> range should expand to include22
Minimal reproduction / demonstration
Current behavior with autorange: true in a streaming graph:
- when values are close to 0, the axis zooms too tightly and keeps changing scale, making the chart hard to read.
Desired behavior:
- keep a stable default range (e.g.
[-10, 10]) until thresholds are exceeded, then expand.
(If maintainers want, I can provide a CodePen reproducing the streaming case using Plotly.extendTraces.)
Additional notes
This feature would be especially valuable for:
- live monitoring dashboards
- industrial / IoT telemetry
- finance signals with mostly small fluctuations but occasional spikes
It’s conceptually related to clipmin/clipmax, but with inverse behavior:
clip*= “don’t expand past these limits”minwindow= “don’t shrink inside these limits, but expand past them when necessary”- or you can add more values in autorangeoptions:
include
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、既存の yaxis.autorangeoptions の処理、特に clipmin、clipmax、minallowed、maxallowed を追跡し、Plotly.extendTraces と Plotly.relayout がストリーミング時の autorange の動作にどのような影響を与えるかを確認します。API を定義し、データが設定された最小ウィンドウ内に収まっている場合は autorange がその最小ウィンドウを維持し、外れ値と既存の padding ルールを含めるのに十分な範囲まで拡張されることを検証します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript
- 領域
- data-visualization
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 42/100