La motivación de la escala de cuantiles es obtener clases que sean representativas de la distribución real de los valores en el conjunto de datos. Por lo tanto, es necesario proporcionarlo durante la construcción con la lista completa de valores. La escala luego divide el dominio de entrada (definido por estos valores) en intervalos (cuantiles), de modo que aproximadamente el mismo número de valores cae en cada uno de los intervalos.
De la documentación:
para calcular los cuantiles, el dominio de entrada está ordenada, y se trata como una población de valores discretos.
Por lo tanto, cuando se especifica el dominio que la mano en la escala de toda la lista de valores:
var scale = d3.scale.quantile()
.domain([1, 1, 2, 3, 2, 3, 16])
.range(['blue', 'white', 'red']);
Si corremos:
scale.quantiles()
Se dará salida [2, 3 ] lo que significa que nuestra población de valores se dividió en estos tres subconjuntos:
[1, 1] [2, 2] [3, 3, 16]
Tenga en cuenta que esta escala debe evitarse cuando hay valores atípicos en los datos que desea mostrar. En el ejemplo anterior 16 es un valor atípico que cae en el cuantil superior. Se le asigna la misma clase que 3, que probablemente no sea el comportamiento deseado:
scale(3) // will output "red"
scale(16) // will output "red"
¿Quizás conoces el significado de quantile y cómo está funcionando? – user1365697
Si desea comprender mejor cómo funcionan estas básculas, puede jugar con esta [visualización] interactiva (http://bl.ocks.org/aviddiviner/84d905e60c6788f77ee21d35f873b236) que hice. – Dave