X 축과 Y 축의 정수가있는 간단한 막 대형 차트를 만들기 위해 이상한 행동을 한 것을 눈치 챘지만 올바르게 생성되었지만 X 축이 이상하게 보입니다. 치수를 설정하지 마십시오. 저는 지난 달 (1 월 7 일부터 현재까지)의 값을 가지고 있지만 X 축은 2013 년 6 월까지의 값에 맞게 조정됩니다.dc.js x 축 기본 도메인 이상한 결과
그래서 지난 달 동안 내 데이터에 대한 그래픽과 작은 조각이 비어 있습니다.
누구나 제안 할 수 있습니까?이 경계는 어디에서 가져 왔습니까? 필자는 코드에 버그가 있음을 알고 있지만 DC 매뉴얼에 적합한 정보를 찾지 못했고 검색 할 위치를 모른다. filter = crossfilter(json);
플롯 데이터 차원을 만듭니다 :
내 데이터를 crossfilter 만들기 :
이
내가 막대 차트를 사용하고 방법입니다 생성var dimension = filter.dimension(function(d){
var result = new Date(d.last_connected);
/* debug code to ensure I have no date older than last month */
if (!('last-date-min' in document))
document['last-date-min'] = result;
else if (result < document['last-date-min'])
document['last-date-min'] = result;
/* debug code end */
return result;
});
차원 내가 보장 가장 오래된 날짜는 '2014 년 1 월 7 일'입니다. 그룹 만들기 및시 최신 날짜를 확인 그룹화 : 그룹 생성되면
var group = dimension.group(function(d){
var result = d3.time['day'].utc(d);
/* debug code */
if (!('late-date-dim-min' in document))
document['last-date-dim-min'] = result;
else if (document['last-date-dim-min'] > result)
document['last-date-dim-min'] = result;
/* debug code end */
return result;
});
는 차트를 생성하고 X와 Y 축 초기화 :
c = bar_chart('last-day-chart', dimension, group);
c.x(d3.time.scale.utc());
c.xAxis().tickFormat(date_formatter);
c.xAxisPadding(1);
c.yAxis().tickFormat(formatter);
c.filterPrinter(date_filter_printer);
다야 : 지금은 데이터 집합을 가지고, 내가 확인을 그 데이터 세트에는 한 달 이전의 날짜가 없지만 7 개월 동안 차트가 표시됩니다. 문제의 원인은 어디입니까?
또한, 나는 렌더링 후 세부 사항을 검토 renderlet 디버깅 추가 나는 이상한 결과 참조 : 이것은 당신이 날짜를 구문 분석하는 방법에 문제가있을 수 있습니다
/* debug code */
c.renderlet(function(chart){
debugger;
var scale_x = c.x();
var scale_range = scale_x.range(); // is [0;100] - why? What is this range?
var min = document['last-date-min']; // ok, Jan 2014
var dim_min = document['last-date-dim-min']; // ok
var scale_domain = scale_x.domain(); // is [0;63286] - why? What is 63286?
});
/**/
물론, 나는 d3.js 설명서를 검토 DC뿐만 아니라 이러한 설명은 디버깅 된 값과 대조 할 때 혼란스러워했습니다. ** _ 스케일. 범위 : 값이 지정되면 스케일의 출력 범위를 설정합니다 지정된 값 배열로 이동합니다. 배열에는 입력 도메인의 카디널리티와 일치하는 두 개 이상의 값이 포함되어야합니다. 주어진 배열의 요소는 숫자 일 필요는 없습니다 _ ** 내 데이터에 [0; 100]과 같은 것은 없습니다. ** _ scale.domain : 축척의 현재 입력 도메인을 반환합니다. ** ** [0; 63286]은 어디에서 왔습니까? 왜 [Date ("2014-01-07"), Date ("2014-02-07")]'? –
나는 문제의 구체적인 예를 종합 할 수 있다면 당신을 도울 수 있다고 생각합니다. 가능한 경우 결과에 직접 영향을주지 않는 코드를 제거하여 jsfiddle에서 가장 간단한 형식의 문제를 재현 해보십시오. –