我已经看到了类似的其他问题,但我的情况有点独特。
我从模拟器中绘制点,该模拟器在24小时内每9秒收集一次数据。这将返回一个包含9600个值的数组。
目前,我通过将数组的索引转换为0到24之间的整数(通过将其乘以0.0025(9/60/60 == 0.0025))来显示整数。所以9600 * .0025 == 24。
但是,我希望能够显示半小时和四分之一小时,所以1:15 AM显示为1:15,下午3:30显示为15:30。
我该怎么做?
答案 0 :(得分:2)
如果我理解正确,可能更容易在午夜设置基准日期,然后添加到它,以便您可以使用d3.time.format,以下某种形式。
var i = 4800
var date = new Date();
date.setHours(0,0,0,0); //set date to midnight
var format = d3.time.format("%H:%M %p") //format to Hour Minutes
date.setSeconds(date.getSeconds() + (9 * i)); //9*4800 for Noon
alert(format(date)) //Alerts 12 P.M.
然后对每个小时的小时使用刻度线格式,类似于下面的
d3.svg.axis()
.scale(x)
.orient("bottom")
.ticks(d3.time.minutes, 15)
.tickFormat(d3.time.format("%H:%M"));
答案 1 :(得分:0)
如果某人有一系列整数并且想要将它们用作显示刻度的小时,这里是v4的解决方案:
var yScale = d3.scaleLinear()
.domain(timeExtent) // [6, 20] from 06:00 to 20:00
.range([0, height - cellHeight]);
var yAxis = d3.axisLeft(yScale)
.tickFormat(function (hour) {
var now = new Date();
now.setHours(hour, 0, 0, 0);
return d3.timeFormat("%H:%M")(now);
});