d3.nice(start, stop, 1) returns [-1e308, 1e308] when the interval contains zero, so d3.bin gives NaN bin bounds
Maintainer antworten meist innerhalb von 1 Tag
@awais-ur-rehman arbeitet bereits daran.
Seit 07.11.2026.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript, node.js
- Bereich
- data
Rechercherichtung
Beginne mit src/nice.js, wo der Issue die Schleife nennt, die das Intervall wiederholt erweitert, und verfolge, wie sich ihr Tick-Abstand bei einer Anzahl von 1 über null hinweg ändert. Reproduziere die Beispiele mit node und prüfe die vorhandenen Tests für nice und bin. Fertig ist die Arbeit, wenn d3.nice ein endliches Intervall zurückgibt, das die Eingabe abdeckt, und die gemeldeten Bin-Grenzen endlich sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
With count 1 and start < 0 < stop, d3.nice keeps widening the interval until the step overflows. d3.bin hits this through thresholds(1) or when thresholdScott / thresholdFreedmanDiaconis return 1, and the bins get NaN bounds.
import * as d3 from "d3-array";
console.log(d3.nice(-1, 5, 1));
console.log(d3.nice(-0.1, 0.2, 1));
console.log(d3.thresholdScott([-1, 5], -1, 5));
console.log(d3.bin().thresholds(d3.thresholdScott)([-1, 5]));
console.log(d3.bin().thresholds(1)([-1.4, 5.6]));
node t.mjs
Actual:
[ -1e+308, 1e+308 ]
[ -1e+308, 1e+308 ]
1
[ [ -1, 5, x0: -1e+308, x1: NaN ], [ x0: NaN, x1: 1e+308 ] ]
[ [ -1.4, 5.6, x0: -1e+308, x1: NaN ], [ x0: NaN, x1: 1e+308 ] ]
Expected: a finite nice interval covering the input (for example [-10, 10] for d3.nice(-1, 5, 1)), and bins with finite x0 and x1.
Tested with d3-array 3.2.5 from npm and main at 24c015e, Node.js 26.13.0.
The loop in src/nice.js stops only when tickIncrement returns the previous step (or a non-finite one). With count 1 across zero, rounding both ends outward always gives an interval of at least two steps, so every iteration picks the next larger step ([-1, 5] to [-5, 5] to [-10, 10] ...). Stopping when the step grows past the previous one, or capping the iterations as d3-scale's linear.nice does, would end it.
Credit: https://ucsbplse.github.io/
- Vorherrschende Sprache
- JavaScript
- Sterne
- 465
- Forks
- 193
- Ø Merge
- 5 Std. 46 Min.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus d3/d3-array
-
regression: in d3.bin, values next to a threshold go into the wrong binEvtl. vergeben @Fil hat das vor 2 Tagen übernommen. Offen
d3/d3-array#295 · 1 Reaktion · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
regression: d3.bin's last bin is twice as wide when the maximum is a thresholdEvtl. vergeben @Fil hat das vor 2 Tagen übernommen. Offen
d3/d3-array#294 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
d3/d3-array#280 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
groupSort should use ascendingDefined instead of ascendingEvtl. vergeben @cpruijsen hat das vor 58 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 10/100
Maintainer antworten meist innerhalb von 1 Tag
-
Incorrect results for binary search on large arrays due to miscomputation of midpointEvtl. vergeben @maximilliangrand hat das vor 88 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 25/100
d3/d3-array#261 · 11 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
mega-yfue/ha-eufy-sdk-bridge#198 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
blamechris/chroxy#9108 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Content:WebExt needs triage
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
liberation-data/drivine#733 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag