我有一个复合线图
.elasticX(true)不起作用:/有人可以帮助我吗
var composite = dc.compositeChart("#durationline-chart");
composite.width(1500).height(350)
.group(Durations)
.brushOn(true)
.yAxisLabel("Duration")
.x(d3.scale.ordinal())
.xUnits(dc.units.ordinal)
.margins({ top: 10, left: 50, right: 10, bottom: 50 })
.elasticY(true)
.elasticX(true)
.renderlet(function(chart) {
chart.selectAll("g.x text")
.attr('transform', "rotate(+20)");
})
.compose([
dc.lineChart(composite)
.group(Testcase_Time, "Time")
.colors('#1E90FF'),
dc.lineChart(composite)
.group(Testcase_Smartkey, "Smartkey")
.colors('red')]);
编辑:这是jsfiddle:https://jsfiddle.net/gordonwoodhull/o9xx3fmm/
答案 0 :(得分:3)
我认为你的意思是在过滤图表时弹性不会被踢入。
这是因为如果它们是空的,则crossfilter仍会返回bin - 它们只有零值。所以dc.js仍然会检测所有垃圾箱的域,包括空箱。
你可以做的是使用假组删除空箱
function remove_empty_bins(source_group) {
return {
all:function () {
return source_group.all().filter(function(d) {
return d.value != 0;
});
}
};
}
var filtered_group = remove_empty_bins(group);
chart.dimension(dim)
.group(filtered_group)
...
然后dc.js将仅检测非零值的域。更多详情in the FAQ。
您必须将此应用于构成图表的所有组。