plotly / plotly/plotly.js

`autorange` throws when y range is small

オープン
#6,249 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug P2
主要言語
JavaScript
スター
18.3k
フォーク
2k
平均マージ
2日 12時間
マージ済み PR(30日)
28

説明

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)

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

2つの JavaScript 例で失敗を再現し、報告されたスタックを getAutoRange と doAutoRange から ax.setScale まで追跡してください。非常に小さい y 範囲の両方が、undefined 値や軸スケーリングのエラーなしに正常にレンダリングされれば、修正は完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript
領域
data-visualization
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。