regression: d3.bin's last bin is twice as wide when the maximum is a threshold

Aperta
#294 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@Fil ci sta già lavorando.

Dal 9/11/2026.

  • #297 di @Fil — aperta

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

With the default domain, when the largest value is a threshold, the last bin can be twice as wide as the others:

d3.bin().thresholds(7)([0, 0.07]).map((b) => [b.x0, b.x1])
// 3.2.4: [[0, 0.01], [0.01, 0.02], …, [0.06, 0.07], [0.07, 0.08]]
// 3.2.5: [[0, 0.01], [0.01, 0.02], …, [0.06, 0.07], [0.07, 0.09]]

Similarly, d3.bin().thresholds(50)([0, 1.1]) ends with [1.1, 1.14] instead of [1.1, 1.12].

In that case, bin extends the domain by one step:

x1 = (Math.ceil(x1 * -step) + 1) / -step;

0.07 * 100 is 7.000000000000001, so Math.ceil returns 8 instead of 7, and the domain is extended by two steps. Before #283, nice made the same rounding error and returned [0, 0.08], so this code did not run.

Affects d3-array 3.2.5 (d3 7.9.1 and 7.9.2).

Lingua principale
JavaScript
Stelle
465
Fork
193
Merge medio
5h 46m
PR unite (30g)
1

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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.

Altre issue di d3/d3-array

Tutte le issue di d3/d3-array

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.