【发布时间】:2015-01-24 19:32:18
【问题描述】:
我想绘制一些不连续的时间序列数据(周末、节假日等日期的间隔)。这是每日数据。
数据看起来像:
date,value
1/2/15,109.33
1/5/15,106.25
1/6/15,106.26
1/7/15,107.75
1/8/15,111.89
1/9/15,112.01
1/12/15,109.25
1/13/15,110.22
...
所以我定义了我的x 和y scales:
var x = d3.time.scale().range([0, width]);
var y = d3.scale.linear().range([height, 0]);
并根据我的源数据设置域:
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.value; }));
然而,问题是我的日期之间有间隔。我的 x 轴现在包括那些缺失的日期(d3.time.scale() 我猜这是因为它映射到一个连续范围而自动执行的吗?)。
.extent() 在date 中找到最大值和最小值,然后.domain() 返回这些最大值和最小值作为 x 轴的范围。但我不确定如何处理间隙并将非间隙日期返回到范围。
所以我的问题是:我怎样才能让我的 x 轴范围只包括我的数据集中的日期?而不是“填空”。我应该玩d3.time.scale().range() 吗?还是我需要使用不同的scale?
这样做的正确方法是什么?有人可以指出我正确的方向或举个例子吗?谢谢!
另外,我想用普通的 d3 和 javascript 来解决。我对使用任何 3rd 方抽象库不感兴趣。
【问题讨论】:
-
您可以使用序数比例。
标签: javascript d3.js