我使用 d3.js
定义了一个线段生成器,代码如下:
var line = d3.svg.line()
.interpolate("monotone")
.x(function(d) {return x(d.date); })
.y(function(d) {return y0(d.visits); });
数据从以下格式的csv文件中读取:
date,visits
12/08/12,1
13/08/12,0
14/08/12,0
15/08/12,33
16/08/12,28
将CSV文件加载到data
中,并解析为:
data.forEach(function(d) {
d.date = d3.time.format("%d/%m/%y").parse(d.date);
d.visits = +d.visits;
});
并添加到文档中使用:
svg.append("path")
.datum(data)
.attr("class", "line")
.attr("d", line)
在我的脚本的其他地方,我需要计算特定日期的y值。例如,我可能希望获取日期为15/08/12
(相当于y0(33)
)的直线的y值。我该怎么做?
item = data[bisect(data, new Date(2012, 8, 15))-1];
。因为匹配是精确的,我需要在右边元素左侧的元素,因此需要减去1。有点不合规则,但它可行。在我的情况下,所有日期都有数据--如果不是这种情况,则此方法可能无效。 - rudivonstaden