条形图列分组太紧

时间:2016-10-06 04:57:02

标签: d3.js

我有一个条形图(由尚未完成堆叠),并且所有列都分组到图表的左侧。 造成这种情况的原因是什么?

Plnkr:https://plnkr.co/edit/DMRJfbD4ZF3xCiPdFedy?p=preview

data.forEach(function(d) {
        var y0_positive = 0;
        var y0_negative = 0;

        d.components = keys.map(function(key) {
            if (d[key] >= 0) {
                // if we have a positive value, add to the postive
                return {key: key, y1: y0_positive, y0: y0_positive += d[key] };
            } else if (d[key] < 0) {
                // if value is negative, add to the negative value
                return {key: key, y0: y0_negative, y1: y0_negative += d[key] };
            }
        })
    })

千电子伏

1 个答案:

答案 0 :(得分:1)

您的图表确实存在 nothing 错误。这是正确的,数据正在准确显示。

我知道这似乎相反,但这就是原因:你使用的是时间刻度,时间刻度不是一个序数刻度。

让我们看看你的约会对象。第一个数据点是:

"date":"2016-11-03 00:00:00"

对应11月3日。但所有其他数据点都来自2016-10-06,即10月6日。

因此,时间刻度将显示这两个极端之间的所有日期(10月6日至11月3日)均匀间隔,并且所有条形图将在10月6日左侧挤压(除了右侧的小栏,对应于11月3日),因为当您使用时间刻度时,这是正确的预期结果!

现在,看看如果我们只是删除数据中的第一个对象(11月3日)会发生什么:https://plnkr.co/edit/rhmh2zxEnwO4SLTLvfNu?p=preview

如果您不想以正确的比例显示时间跨度,请改用序号,例如scaleOrdinalscaleBand