2014-11-18 2 views
0

D3.js를 사용하여 다른 분포의 커널 밀도 추정치 (파이썬에서 추정치를 내보내는 대신)를 생성하여 서로 위에 겹칠 수 있도록하려고합니다. related question에서D3.js에서 DOM 요소에 함수 결합하기

는, 내가 문제가 예제의 일부를 연결하는 데이터를 이해하는 데, 그것을 어떻게 예를 나타내는 this 페이지로

을 지시했다. 작성자는 science.stats.bandwidth을 그의 path 요소에 조인하지만 그는 전혀 사용하지 않는 것으로 보입니다. 바운드 함수/데이터를 참조하지 않고 속성이 path으로 설정됩니다.

science.stats.bandwidth에서 대역폭 기능 중 하나만 사용하고 싶습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있는지 궁금 해서요.

sa=vis.selectAll(".cat") 
.data(result) 
.enter() 
.append("g") 
.attr("class", "category"); 

count = 0; 
sa.each(function(){ 
sb = d3.select(this); 
sb.selectAll(".path") 
.data(d3.values(science.stats.bandwidth)) 
.enter() 
.append("path") 
.attr("stroke", function(d){return color(d)}) 
.attr("d", function(h) { 
    return line(allKde[count].bandwidth(h)(d3.range(<lowerExtent>,<higherExtent>,1))); 
    }) 
count = count + 1; 
}); 

결과가 [{'a':'<name>','b':<array of numbers>}...]과 같은 사전의 목록입니다 다음과 같이 링크 된 예에서

내 modfications 지금까지입니다. 그것은 사용하기 때문에이 혼동 될 수

.attr("d", function(h) { 
    return line(allKde[count].bandwidth(h)(d3.range(<lowerExtent>,<higherExtent>,1))); 
}) 

: allKde는 SVG 경로의 d 속성이 참으로 바인딩 된 데이터를 사용 설정 science.stats.kde().sample(result<index>.b)

+0

I에 대한 science.stats.bandwidth[0]을 지금까지 내가 한 것을 추가했습니다. 'result'에서 각 항목에 대해 두 가지 커널 밀도 추정값을 산출합니다. 나는 각 항목에 대해 단 하나의 커널 밀도 추정을 생성하고,'path'에 바인딩 된'result' 자체를 이상적으로 추가하여 범례를 추가 할 수 있습니다. 감사! – portugueseNinja

답변

0

익명 함수에 의해 생성되는 각각의 KDEs의 목록입니다 d 대신 h인데, 이는 d3 예제에서 더 일반적입니다.

이 예제에서 인덱스의 일부 비표준적인 사용이 혼동을 줄 수 있습니다. (카운트 변수는 선을 정의하는 데 사용되는)

당신이, 당신은 단순히 데이터의 하나 개의 요소에 결합 할 수 있어야한다 science.stats.bandwidth의 단일 요소에 대한 하나 개의 라인을 추가하려면 다음 예를