scaleDiverging for domain [1,1,0] produces wrong results
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- d3, javascript
- Ambito
- data-visualization
Direzione di ricerca
Start by reading the diverging scale implementation and its tests; the issue does not name specific files. Reproduce the reported case with domain [1, 1, 0] and compare it with the sorted-domain example. Done means the reversed domain maps values across the two halves as expected, with regression coverage for the reported edge case.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The d3.scaleDiverging Method returns wrong results if the domain is reverted and the left domain border is equal to the midpoint.
const s = d3.scaleDiverging().domain([1, 1, 0]);
for (const i of [-0.5, 0, 0.25, 0.5, 0.75, 1, 1.5]) {
console.log(i, s(i));
}
/* prints
-0.5 0.5
0 0.5
0.25 0.5
0.5 0.5
0.75 0.5
1 0.5
1.5 0.25
*/
Having the domain sorted and applying 1-x to the scale produces the expected results:
const s = d3.scaleDiverging().domain([0, 1, 1]);
for (const i of [-0.5, 0, 0.25, 0.5, 0.75, 1, 1.5]) {
console.log(i, 1 - s(i));
}
/* prints
-0.5 1.25
0 1
0.25 0.875
0.5 0.75
0.75 0.625
1 0.5
1.5 0.5
*/
I encountered this because I wanted to use the RdBu colormap and map values [0,1] to [0.5,1] (blue part) and [1,max(data)] to [0, 0.5] (red part):
const colorMap = d3.scaleDiverging().domain([Math.max(maxValue, 1), 1, 0]).interpolator(d3.interpolateRdBu);
and had to change it to this:
const colorMap = d3.scaleDiverging().domain([0, 1, Math.max(maxValue, 1)]).interpolator(x => d3.interpolateRdBu(1 - x));
I use https://cdn.jsdelivr.net/npm/[email protected]/dist/d3.min.js.
- Lingua principale
- JavaScript
- Stelle
- 1.6k
- Fork
- 288
- Merge medio
- 6h 41m
- 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di d3/d3-scale
-
The default tickFormat with a collapsed domain lacks sufficient precisionForse già presa @Fil l’ha presa 877 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Feature request: exp scaleAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
-
i18n for partial date ticksAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
Issue simili
-
maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
assistant-ui/assistant-ui#10496 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
ai bug design good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
neomjs/neo-agent-institution#927 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
gramps-project/gramps-web#1671 ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue priority: P2 status: ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
RhinoLink-Tech/data-fabric#502 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
cline/mcp-marketplace#3708 ·