d3.js dc.js系列每年一条生产线

cgvd09ve  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(111)

你好,我用这个代码让我的线与每个月的点。
现在我想自动获得每年的一个系列-什么是最好的方式呢?

function Dimension() {
    return Data.ndx.dimension(function (d) { return moment.localeData()._months[d["DATE"].getMonth()]; });
}

function Group(thisDim) {
    var thisVal = thisDim.group().reduceSum(function (d) { return d["VALUE"]; });
    return thisVal;
}

var thisDim = Dimension();
var thisVal = Group();
chartObject.dimension(thisDim).group(thisVal)
                .title(function (d) {   return d.key; })
                .label(function (d) {  return d.key;})
                .margins({top: 10, right: 10, bottom: 30, left: 70})
                .elasticY(true)
                ;
chartObject.x(d3.scaleBand().range([0,11])).xUnits(dc.units.ordinal);
chartObject.xAxis().tickFormat(function(d) { return moment.localeData()._months[d]; });
ycl3bljg

ycl3bljg1#

最简单的方法可能是使用series chart。系列图表是复合图表的快捷方式,它基于键的部分拆分数据,并自动为每个系列访问器值生成一个(折线)图表。
它将要求您为您的维使用一个“多键”,带有年份和月份。您将使用seriesAccessorkeyAccessor告诉dc.js如何拆分多键。
顺便说一句,您处理月份的方式比实际需要的要复杂得多。

moment.localeData()._months[d["DATE"].getMonth()]

然后,您的秤会将这些名称重新转换为数字:

.x(d3.scaleBand().range([0,11]))

相反,我建议使用年份和月份数字作为多键:

return Data.ndx.dimension(d => ([d.DATE.getYear(), d.DATE.getMonth()]));

然后其余的应该按照上面链接的例子...但请评论,如果你遇到麻烦,因为我省略了一些细节。

相关问题