2
d3 및 crossfilter를 기반으로하는 Dimensional Charting 자바 스크립트 라이브러리 dc.js를 사용하여 스택 형 barchart를 만들고 있습니다. 나는 dc.js 라이브러리에 새로운 사람들이다. csv 파일을 사용하여 스택 된 barchart를 표시하려고합니다. csv 형식을 따르는 스택 된 barchart를 만드는 방법을 이해할 수 없습니다.dc.js : 스택 형 barchart 캔트 디스플레이
State_Name Age_19_Under Age_19_64 Age_65_84
AL 26.9 62.3 9.8
AL 23.5 60.3 14.5
NW 24.3 62.5 11.6
NW 24.6 63.3 10.9
BR 24.5 62.1 12.1
BR 24.7 63.2 10
GH 25.6 58.5 13.6
GH 24.1 61.6 12.7
KS 24.8 59.5 13.5
내가 다음 코드 노력하고 있어요 : 나는 당신이 그렇게 옆으로 설정, 이벤트 핸들러에 구현하려는 상호 작용에 어떤 종류의 확실하지 않다
<script type="text/javascript">
var stacked = dc.barChart("#chart");
d3.csv("{% static 'sampledata/healthdata111.csv' %}", function(error, experiments) {
var ndx = crossfilter(experiments);
var all = ndx.groupAll();
var stateDim=ndx.dimension(function (d){
return d.State_Name;
});
var eventsByDate = stateDim.group().reduce(
function (p, v) {
p.Age_19_Under += v.Age_19_Under;
p.Age_19_64 += v.Age_19_64;
p.Age_65_84 += v.Age_65_84;
return p;
},
function (p, v) {
p.Age_19_Under -= v.Age_19_Under;
p.Age_19_64 -= v.Age_19_64;
p.Age_65_84 -= v.Age_65_84;
return p;
},
function() {
return {
Age_19_Under: 0,
Age_19_64: 0,
Age_65_84: 0
};
}
);
var colorRenderlet = function (chart) {
chart.selectAll("rect.bar")
.on("click", function (d) {
function setAttr(selection, keyName) {
selection.style("fill", function (d) {
if (d[keyName] == "Age_19_Under") return "#63D3FF";
else if (d[keyName] == "Age_19_64") return "#FF548F";
else if (d[keyName] == "Age_65_84") return "#9061C2";
});
}
setAttr(_chart.selectAll("g.stack").selectAll("rect.bar"), "layer");
setAttr(_chart.selectAll("g.dc-legend-item").selectAll("rect"), "name")
});
};
stacked
.margins({top: 50, right: 20, left: 50, bottom: 50})
.width(500)
.height(200)
.gap(50)
.dimension(stateDim)
.group(eventsByDate, "Age_19_Under")
.valueAccessor(function (d) {
return d.value.Age_19_Under;
})
.stack(eventsByDate, "Age_19_64", function (d) {
return d.value.Age_19_64;
})
.stack(eventsByDate, "Age_65_84", function (d) {
return d.value.Age_65_84;
})
.x(d3.time.scale().domain([0,5000]))
.xUnits(d3.time.days)
.centerBar(true)
.elasticY(true)
.brushOn(false)
.renderlet(colorRenderlet);
// .legend(dc.legend().x(100).y(0).itemHeight(13).gap(5));
dc.renderAll();
});
</script>
몇 가지 사소한 수정을하여 예제 코드를 [tributary inlet] (http://tributary.io/inlet/11070109)에 넣었습니다. 이것은 현재 당신이 얻는 결과입니까? CSV 형식을 CSV 형식으로 변경했습니다 ... – elsherbini