2012-05-14 2 views
15

이 진술의 의미는 무엇입니까?d3.scale.quantile은 어떻게 작동합니까?

quantize = d3.scale.quantile().domain([0, 15]).range(d3.range(9)); 

나는 도메인이 보았다 : - 0
1 -

0 ~ 15

범위는 0에서 8까지이며,

0 - 1.6 
1 - 3.3 
2 - 4.9 
3 - 6.6 
4 - 8.3 
5 - 9.9 
6 -11.6 
7 -13.3 
을 quantize.quantiles

양자화 할 값은 어떻게됩니까? quantize(2)으로 전화를 시도했지만 결과는 1입니다. quantile은 어떻게 작동합니까?

+0

아마도 quantile의 의미와 작동 방식을 알고 있습니까? – user1365697

+3

이러한 저울의 작동 방식을 더 잘 이해하려면이 대화식 [시각화] (http://bl.ocks.org/aviddiviner/84d905e60c6788f77ee21d35f873b236)을 사용하십시오. – Dave

답변

4

내가의 quantile scale documentation 위에 읽는 것이 좋습니다 특히 그 quantize.quantiles()

그러나 기본적으로, D3는 9 분위를 만들어 있도록이 규모의 출력 범위에서 9 개 값이에 따라,이 있다고보고에 2 값 데이터 세트 : [0, 15].
질문에 표시되는 quantize.quantiles() 값은 [1.6, 3.3, .., 13.3]이며, 이들은 quantile의 경계를 나타냅니다. 1.6보다 작은 것은 첫 번째 요소로 매핑됩니다. 출력 범위 (이 경우 0). 3.3보다 작고 1.6보다 큰 값은 출력 범위의 두 번째 요소 (1)에 매핑됩니다. 따라서 quantize (2) = one, 예상대로.

21

Quantile Scale의 동기 부여는 데이터 세트의 값의 실제 분포를 나타내는 클래스를 얻는 것입니다. 따라서 건설 중에 값의 전체 목록을 제공해야합니다. 그런 다음 스 I 일은 입력 도메인 (이 값으로 정의)을 간격 (퀀 타이들)으로 분할하여 거의 동일한 수의 값이 각 간격에 속하도록합니다. 문서에서

:

는 분위수를 계산하기 위해, 상기 입력 영역은 정렬 이산 값들의 집단으로 간주한다. 우리는 다음 실행하면

var scale = d3.scale.quantile() 
    .domain([1, 1, 2, 3, 2, 3, 16]) 
    .range(['blue', 'white', 'red']); 

: 도메인을 지정할 때

그러므로, 우리는 스케일 값의 전체 목록을 손

scale.quantiles() 

출력됩니다 [2,3 ] 이는 값의 인구가 다음 세 가지 하위 집합으로 나뉘어 졌음을 의미합니다.

[1, 1] [2, 2] [3, 3, 16] 

표시 할 데이터에 이상 치가있는 경우에는이 배율을 사용하지 마십시오. 위의 예에서 16은 상위 분수로 떨어지는 이상치입니다. 3과 동일한 클래스가 지정됩니다. 이는 아마도 원하는 동작이 아닙니다.

scale(3) // will output "red" 
scale(16) // will output "red"