javascript - 在 d3 轴上显示持续时间

标签 javascript d3.js time-series timespan

我目前正在使用 d3.time.scale.utc() 创建一个 d3 轴。我的轴输入是一系列以分钟为单位的时间偏移量(带十进制值)。例如:

var minuteOffsets = [0.03, 1.65, 3.22, ..., 89.91, 90.01];

我想在轴上以 mm:ss 格式显示这些时间偏移。轴标签可以采用标准间隔,如下所示:

  +------+------+-- ... --+------+------+-- ... --+------+
00:00  00:30  01:00     59:30  60:00  60:30     90:00  90:30

请特别注意,分钟值应显示值 >60。秒值的正常范围为 0-59。

当我尝试使用 .tickFormat(d3.time.format('%M:%S')) 时,它会将分钟值换回到 00:0045:00 标签之后。我还查看了 moment.js 中的 duration,但我不知道如何将它准确地合并到我的代码中。

最佳答案

根据 Lars Kotthoff 的评论,我将比例尺改为线性比例尺,而不是时间比例尺。然后我添加了一个自定义的 tickFormat 函数来进行必要的格式化。

我使用 MomentJS 首先从分钟值创建一个 duration,然后使用库 moment-duration-format生成 mm:ss 格式的刻度标签。

var axis = d3.svg.axis().tickFormat(function (d) {
    return moment.duration(d, 'minutes')
                 .format('mm:ss', { trim: false });
});

这有助于避免显式编写代码来提取分和秒的组成部分,然后将它们格式化为字符串。

关于javascript - 在 d3 轴上显示持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26375592/

相关文章:

javascript - 将点击事件添加到数据表

javascript - 如何在angularjs中使用ui-router获取url参数

javascript - Canvas 乘法悬停效果

javascript - 更新交叉轴上的 D3 多线图表

r - na.locf 但不要做尾随 NA

javascript - React js 对象作为 React 子对象无效

javascript - 使用 CSS 网格,从任何地方滚动一个 div(不使用 jQuery 插件)

javascript - 如何重用可能发生变化的JSON数据?

Python pandas 绘制有间隙的时间序列

r - 执行数学运算后在时钟时间内显示时间