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

Aberta
#294 0 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@Fil já está trabalhando nisso.

Desde 9/11/2026.

  • #297 de @Fil — aberto

Avaliação

Esta issue ainda não foi avaliada.

Descrição

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).

Linguagem predominante
JavaScript
Estrelas
465
Forks
193
Merge médio
5h 46min
PRs com merge (30d)
1

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de d3/d3-array

Todas as issues de d3/d3-array

Issues semelhantes

Mais issues de JavaScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.