我正在尝试根据收入显示前5个国家
我试图在图表中加入不起作用
.group(countryGrp.top(10))
但是当我尝试console.log(countryGrp.top(10))
时,我可以看到值
var country = data.dimension(function(d){return d.PName});
var countryGrp = lead.group().reduceSum(function(d) {
return d.Amount;
});
var leadBarChart = dc.barChart("#country-chart")
leadBarChart.width(500).height(450).transitionDuration(750)
.margins({
top : 20,
right : 10,
bottom : 80,
left : 50
})
.dimension(country)
.group(countryGrp.top(10))
.ordinalColors([ "#1F77B4" ]).elasticY(true).centerBar(true)
.title(function(d) {
return d.Amount;
}).gap(6).xUnits(function() {
return 2;
})
.x(d3.scale.linear())
.renderHorizontalGridLines(true).xAxis().ticks(5)
.tickFormat(d3.format("d"));
我收到此错误未被捕获TypeError:undefined不是一个函数可以任何人帮助我在这里。提前致谢
答案 0 :(得分:3)
所以group.top(N)
没有返回一个组对象;它返回一个数组。您需要为组参数提供组。
不幸的是,条形图当前不支持capping,但你可以做的是预过滤数据,如下所述:
https://github.com/dc-js/dc.js/wiki/FAQ#filter-the-data-before-its-charted
基本上你会创建一个"假组"它具有.all()
功能,只返回您想要的项目。
我打算修复.data()
以便它适用于条形图:
https://github.com/dc-js/dc.js/issues/584
(并且支持封顶也很好)但是现在我认为你被困在"假组"解决方法。
如果您无法使用此功能,请在此处发表评论,或者将示例添加到上面链接的Wiki中,如果您确实可以使用它!
答案 1 :(得分:2)
您希望使用以下内容:
var viewModel = (MyViewModel)DataContext;
然后,您可以使用.group(fakeGroup)正确绘制数据图表。