plotly / plotly/plotly.js

`autorange` throws when y range is small

Aperta
#6,249 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug P2
Lingua principale
JavaScript
Stelle
18.3k
Fork
2k
Merge medio
2g 12h
PR unite (30g)
28

Descrizione

When max(y) - min(y) is a very small value, ie, Number.MIN_VALUE, plotly failed to draw the plot.

Codepen https://codepen.io/opportunityliu/pen/QWmwPEO

TESTER = document.getElementById('tester');

Plotly.react( TESTER, [{
    x: [1, 2, 3, 4, 5],
    y: [0,0,0,0,Number.MIN_VALUE] }]);

image

Got error:

plotly-2.12.1.js:141901 
        
       Uncaught TypeError: Cannot read properties of undefined (reading 'val')
    at getAutoRange (plotly-2.12.1.js:141901:26)
    at doAutoRange (plotly-2.12.1.js:142098:56)
    at exports.doAutoRangeAndConstraints (plotly-2.12.1.js:140196:13)
    at doAutoRangeAndConstraints (plotly-2.12.1.js:134769:21)
    at lib.syncOrAsync (plotly-2.12.1.js:129221:15)
    at positionAndAutorange (plotly-2.12.1.js:134759:20)
    at lib.syncOrAsync (plotly-2.12.1.js:129221:15)
    at Object._doPlot (plotly-2.12.1.js:134834:24)
    at Object.newPlot (plotly-2.12.1.js:135011:20)
    at Object.react (plotly-2.12.1.js:137070:28)

When the diff become slightly larger, ie, 1e-310, I got another error and an empty plot

Codepen https://codepen.io/opportunityliu/pen/wvmBZEy

TESTER = document.getElementById('tester');

Plotly.react( TESTER, [{
    x: [1, 2, 3, 4, 5],
    y: [0,0,0,0,1e-310] }]);

image

plotly-2.12.1.js:153093 
        
       Uncaught Error: Something went wrong with axis scaling
    at ax.setScale (plotly-2.12.1.js:153093:19)
    at axes.drawOne (plotly-2.12.1.js:144647:8)
    at plotly-2.12.1.js:144605:31
    at lib.syncOrAsync (plotly-2.12.1.js:129221:15)
    at axes.draw (plotly-2.12.1.js:144600:16)
    at drawAxes (plotly-2.12.1.js:134783:21)
    at lib.syncOrAsync (plotly-2.12.1.js:129221:15)
    at Object._doPlot (plotly-2.12.1.js:134834:24)
    at Object.newPlot (plotly-2.12.1.js:135011:20)
    at Object.react (plotly-2.12.1.js:137070:28)

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il malfunzionamento con i due esempi JavaScript e segui lo stack riportato da getAutoRange e doAutoRange fino ad ax.setScale. La correzione è completata quando entrambi gli intervalli y molto piccoli vengono renderizzati correttamente, senza errori dovuti a valori undefined o al ridimensionamento dell'asse.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript
Ambito
data-visualization
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.