我有一个用 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
. 有没有更好的方法来制作这些标签?