条形图中的自定义时间间隔在条形之间没有间隔

时间:2019-03-22 19:45:15

标签: d3.js dc.js crossfilter

我创建了自己的d3-time interval并将其添加到切换时间间隔example(移植到此jsfiddle)。 但是我对结果不满意。未显示两个条之间的间隙。 screenshot of fiddle

我希望其他所有间隔都带有间隙。我怀疑自定义间隔的实现是错误的,但是我无法弄清楚问题出在哪里。 我在另一个项目中使用了此实现,却发生了相反的情况:间隙最大,条形很小。

var threeMonthsInterval = d3.timeInterval(
    function (date) {
        date.setDate(1);
        date.setHours(0, 0, 0, 0);
        var currentMounth = date.getMonth()
        if (currentMounth <= 2) {
            // 'Q1';
            date.setMonth(0)
        } else if (currentMounth > 2 && currentMounth <= 5) {
            // 'Q2';
            date.setMonth(3)
        } else if (currentMounth > 5 && currentMounth <= 8) {
            // 'Q3';
            date.setMonth(6)
        } else {
            // 'Q4';
            date.setMonth(9)
        }
    },    
    function (date, step) {
        date.setMonth(date.getMonth() * 3 + step);
    },
    function (start, end) {
        return (end.getMonth() - start.getMonth()) / 3 + (end.getFullYear() - start.getFullYear()) * 3;
    },    
    function (date) {
        return date.getMonth() * 3;
    }
);

1 个答案:

答案 0 :(得分:1)

计算两个日期之间数字的数字

function (start, end) {
    return (end.getMonth() - start.getMonth()) / 3 + (end.getFullYear() - start.getFullYear()) * 3;
},    

告诉dc.js要计划多少条,因此应该有多少条。

我尚未测试您的代码,因此可能还有其他问题,但是一年有四个季度,因此最后一个数字应该是4。