d3.nice(start, stop, 1) returns [-1e308, 1e308] when the interval contains zero, so d3.bin gives NaN bin bounds
Mantenedores costumam responder em até 1 dia
@awais-ur-rehman já está trabalhando nisso.
Desde 7/11/2026.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript, node.js
- Domínio
- data
Direção de pesquisa
Comece por src/nice.js, onde a issue identifica o loop que amplia o intervalo repetidamente, e acompanhe como o passo entre os ticks muda com uma contagem de 1 ao cruzar o zero. Reproduza os exemplos com node e examine os testes existentes para nice e bin. O trabalho estará concluído quando d3.nice retornar um intervalo finito que cubra a entrada e os limites dos bins relatados forem finitos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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/
- 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
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de d3/d3-array
-
regression: in d3.bin, values next to a threshold go into the wrong binTalvez já em andamento @Fil assumiu há 2 dias. Aberta
d3/d3-array#295 · 1 reação · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
regression: d3.bin's last bin is twice as wide when the maximum is a thresholdTalvez já em andamento @Fil assumiu há 2 dias. Aberta
d3/d3-array#294 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
d3/d3-array#280 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
groupSort should use ascendingDefined instead of ascendingTalvez já em andamento @cpruijsen assumiu há 58 dias. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 10/100
Mantenedores costumam responder em até 1 dia
-
Incorrect results for binary search on large arrays due to miscomputation of midpointTalvez já em andamento @maximilliangrand assumiu há 88 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 25/100
d3/d3-array#261 · 11 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
Todas as issues de d3/d3-array
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
mega-yfue/ha-eufy-sdk-bridge#198 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
blamechris/chroxy#9108 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
Content:WebExt needs triage
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
liberation-data/drivine#733 · 1 comentário ·
Mantenedores costumam responder em até 1 dia