[FEATURE]: minimum autorange window
Nessuno ha ancora preso questa issue.
- Lingua principale
- JavaScript
- Stelle
- 18.3k
- Fork
- 2k
- Merge medio
- 2g 12h
- PR unite (30g)
- 28
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia tracciando la gestione esistente di yaxis.autorangeoptions, in particolare clipmin, clipmax, minallowed e maxallowed, e verifica in che modo Plotly.extendTraces e Plotly.relayout influenzano il comportamento di autorange durante lo streaming. Definisci l'API e verifica che autorange mantenga la finestra minima configurata quando i dati rimangono al suo interno, espandendosi abbastanza da includere i valori anomali e le regole di padding esistenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript
- Ambito
- data-visualization
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 42/100