2013-12-11 3 views
1

나는 과 비슷한 d3.js 막대 그래프를 구현했습니다. 이것은 잘 작동하지만 일부 유스 케이스에서는 데이터의 수를 전처리하고 d3.layout.histogram()에 필요한 빈도를 전달하고 싶습니다. 이미 주어진 주파수를 기반으로 d3.js 막대 그래프를 만듭니다.

{ "0-5" : 2, 
    "5-10" : 0, 
    "10-15" : 1, 
    ... 
} 

내가이

var data = d3.layout.histogram() 
    .bins(x.ticks(20)) 
    (values); 

에 나에게 전화를 절약 할 생각하지만 제대로이 통합하는 방법을 잘 모르겠습니다 대신 값 [13, 5, 88, 4]

나는 다음있을 것입니다. 빈의 너비를 계산하려면 여전히 d3.layout 함수가 필요합니다. 빈의 수는 주어진 주파수의 특성 수를 통해 주어집니다. 어떤 힌트?

답변

3

이 대답은 빈을 동적으로 전달하려고한다고 가정합니다. 여전히 주파수 계산을 수행 할 수 있습니다. layout.histogram

histogram.bins 방법으로 배열을 전달할 수 있습니다. 그래서 같이 :

// Generate a histogram using twenty uniformly-spaced bins. 
var values= [13,5,88,4]; 
var data = d3.layout.histogram() 
    .bins(d3.range(0,100,6)) 
    (values); 

당신도 minvalues 배열의 max을 찾아 d3.range()에 전화를 매개 변수화 할 수 있습니다. 이렇게하면 주파수를 찾기 위해 연관 배열을 만드는 시간을 절약 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 애매하게 표현한 것 같습니다. 내가 정말로 원했던 것은 주파수를 스스로 계산하여 (서버 측에서) d3.layout으로 전달하는 것입니다. 제목을 업데이트하고 약간 질문했습니다. – Mahoni

+1

'histogram' 레이아웃은 전달 된 데이터의 빈도를 계산하기 위해 [used] (https://github.com/mbostock/d3/wiki/Histogram-Layout#wiki-_histogram)이므로 여기서는 도움이되지 않을 수 있습니다. 당신은 이미 가지고 있습니다. 지정한대로 저장소의 너비를 계산하려면 새'd3.scale'을 만들고'ticks' 함수를 사용할 수 있습니다. – jacquard

관련 문제