我正在尝试在dc-js中找到一种方法来绘制一个图表,该图表将显示当年的月度值,但显示前几年的年均值。如果日期轴是动态的,是否有可能?我曾考虑过按年份对记录进行分组,然后再将它们传递给dc.js,但是图表只会在x轴上留下空白。
我希望通过基于Web的交互式解决方案获得与附加的excel屏幕截图相似的结果。
答案 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。