2017-02-08 4 views
1

이것은 내 코드 조각으로, 데이터를 가져올 수 없습니다. 저는 d3을 처음 접했고 서수 또는 스케일 스케일에 문제가 있다고 생각합니다. 누구든지 도와 줄 수 있어요.서수 규모의 d3 v4 막대 그래프 만들기

dom = (data.map(function(d) { return d[attri]; })); 

    x = d3.scaleBand()  
    .range([0,width]) 
    .paddingInner([0.1]) 
    .paddingOuter([0.3]) 
    .align([0.5]); 

    x.domain(dom); 

    bins = d3.histogram() 
    .domain(x.domain) 
    (mydata); 

답변

1

여기에는 두 가지 문제점이 있습니다. 게터 (뿐만 아니라 세터 등)로

첫 번째 문제, domain 괄호가 : 불행하게도

x.domain() 

하지만, 코드를 수정하지 않습니다, 당신은 할 수 없습니다

bins.domain(x.domain()) 

... 스케일이있는 히스토그램 도메인 용입니다. 그 이유는 두 번째 문제입니다.

d3 막대 그래프에서 domain은 최소값과 최대 값의 두 값을 갖는 배열입니다. 문서에 따라 :

도메인이 지정된 경우 도메인 접근자는 지정된 함수 또는 배열을 설정하고이 히스토그램 생성기를 반환합니다. [...] 히스토그램 도메인은 [min, max] 배열로 정의됩니다. 여기서 min은 최소 관측 값이고 max는 관측 가능한 최대 값입니다. 두 값은 모두 포함됩니다. 히스토그램이 생성되면이 도메인 외부의 값은 무시됩니다. (source)

그러나 지금, 당신의 x.domain()은 (data.map에서) 여러 값을 가진 배열입니다. 스케일이 선형 인 경우 x.domain()을 사용하여 히스토그램 도메인을 으로 설정할 수 있습니다.

따라서 히스토그램 도메인을 올바르게 설정하십시오.

+0

우리는 값의 집합으로 도메인을 가질 수 있다고 생각합니다. http://stackoverflow.com/questions/29318223/d3js-histogram-with-ordinal-scale 아래의이 링크를 참조하십시오. 내 도메인은 [ "marrried", "unmarried", "divorced"] 등과 같은 값을 포함하고있는 것과 동일합니다. v4의 v3의 histogram.layout과 비슷한 것을 원합니다. –

+0

아니요, 할 수 없습니다. 이 링크에서 ** 히스토그램 도메인 **가 값 집합으로 표시됩니까? 아니, 아니야. 그 질문에서 OP는 단순히 히스토그램에 일련의 값을 전달하기 위해 순서 척도를 사용합니다. –

+0

그래서 여기에서 달성하고 싶은 것을 계획 할 수 없습니까? 나는 d3에 처음있어 당신을 도울 수 있습니다. –