我正在尝试绘制过去 2 小时的时间序列,只是一堆带有时间戳和值的点。例如{time: 1234234553, value: 34}
当一个新点到达时,我将它推到列表的末尾data
并重新绘制列表中的所有内容:
function redraw()
{
var TS = new Date().getTime(); // current time stamp
var T = (60*60*2*1000); // last two hours
chart.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("x", function(d, i) { return x(d.time - TS + T); })
.attr("y", function(d) { return H - y(d.value); })
.attr("width", function(d) { return 2; })
.attr("height", function(d) { return y(d.value); });
}
但不幸的是,该点出现在绘图的左侧而不是右侧,当我在 Firebug 中查看 SVG 的源时,该条目有一个奇怪的 x 值:
<rect x="function (){}" y="354.9553019925952" width="2" height="45.044698007404804"/>
任何人都可以帮忙吗?我需要删除所有绘制的数据并重新绘制吗?
附录:
如果您需要查看 x() 和 y()
var T = (60*60*2*1000); // 1 hurs
var x = d3.scale.linear()
.domain([0, T])
.range([0, W]);
var y = d3.scale.linear()
.domain([d3.min(data, function(d) { return d.value; }), 10])
.range([0, H]);