【发布时间】:2012-07-02 11:10:55
【问题描述】:
我有一个要使用 d3.js 绘制图形的数据集。 x 轴代表时间(以分钟为单位)。我想以hh:mm 格式显示此轴,但我找不到在 d3 中干净利落地执行此操作的方法。
我的坐标轴代码如下:
svg.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,' + height + ')')
.call(d3.svg.axis()
.scale(x)
.orient('bottom'));
它会在几分钟内生成类似于[100, 115, 130, 140] 等的标签。
我目前的解决方案是在生成 text 元素后选择它们,并用函数覆盖它们:
svg.selectAll('.x.axis text')
.text(function(d) {
d = d.toFixed();
var hours = Math.floor(d / 60);
var minutes = pad((d % 60), 2);
return hours + ":" + minutes;
});
这会输出轴刻度,如[1:40, 1:55, 2:10] 等。
但这感觉很笨拙并且避免使用d3.format。有没有更好的方法来制作这些标签?
【问题讨论】: