我有一个图表,显示过去 90 分钟的实时数据,目前我的 x 轴使用标签为 90 到 0
xRRange = d3.scale.linear().range([MARGINS.left, WIDTH - MARGINS.right])
.domain([90,0])
我想要做的是将数字 0 - 90 替换为时间,即 90 将是 now-90,0 将是 now 我已经尝试了以下方法,但它无法绘制轴,任何我出错的想法
var xStart = Math.round(+new Date()/1000);
var xEnd = xStart - (60*90);
xTRange = d3.scale.time().range([MARGINS.left, WIDTH - MARGINS.right])
.domain([xEnd, xStart])
.nice()
xTAxis = d3.svg.axis().scale(xTRange)
.tickSize(20)
.tickSubdivide(true);
vis.append('svg:g').attr('class', 'x axis')
.attr('transform', 'translate(0,' + (HEIGHT - MARGINS.bottom) + ')')
.call(xTAxis);
最佳答案
您似乎交换了 xEnd 和 xStart。在第一个代码块中,较小的值位于末尾。在第二个中,较大的值位于末尾。
此外,第一行将 xStart 和 xEnd 值转换为秒。您不会在 domain
调用中将它们转换回毫秒。当 d3 将它们强制转换为日期时,它们将不会是您所期望的(会少得多)
关于javascript - D3.js 从现在开始的时间刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32025743/