dc.js-前几年的年平均值+本年的月平均值

时间:2018-07-16 12:30:44

标签: dc.js

我正在尝试在dc-js中找到一种方法来绘制一个图表,该图表将显示当年的月度值,但显示前几年的年均值。如果日期轴是动态的,是否有可能?我曾考虑过按年份对记录进行分组,然后再将它们传递给dc.js,但是图表只会在x轴上留下空白。

我希望通过基于Web的交互式解决方案获得与附加的excel屏幕截图相似的结果。

screenshot

1 个答案:

答案 0 :(得分:0)

为此,您将需要使用序数域。

如果使用基于时间的比例尺,则条形将始终基于日期到X坐标的线性映射进行定位。这说明了您看到的差距。

相反,您可以显式定义序域:

var domain = ["2015 Average", "2016 Average", "2017 Average", "201801", "201802", ...];
chart
    .x(d3.scaleOrdinal().domain(domain))
    .xUnits(dc.units.ordinal)

您还需要相应地更改组键功能:

var group = dimension.group(function(d) {
    return d.date.getYear() < 2018 ?
        d.date.getYear() + " Average" :
        d3.timeFormat('%Y%m')(d.date);
});

我不确定您打算如何计算平均值,因此我不会对此进行讨论。

不幸的是(或幸运的是,取决于您的目的)这将改变选择行为,因此您必须单击单个条以选择它们,而不是可以拖动的连续X笔刷。有一些解决方法,但是它们有些棘手,所以如果您遇到问题,请lmk。