8

适当的披露 - 我在 javascript 方面很糟糕,但正在努力学习!

我有一个数组,其中包含一些类似的条目:

[1349013600] => 232

键是 unix 时间戳,值是当天的销售额。我目前正在将这些绘制在多条形图上,效果很好。

问题是我的 x 轴,目前定义如下:

chart.xAxis
.tickFormat(d3.format(',f'));

它将 unix 时间戳输出为针对 x 轴标签和悬停工具提示的直接 int。我想尝试让它输出为 DMY 或类似的人类可读的日期指示器。

我发现的最接近的是这段代码:

chart.xAxis.tickFormat(function(d) {
       var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
   return d3.time.format('%x')(new Date(dx))
 });

但是我很难理解它在做什么并且无法在我的特定图表上实现。当前代码如下所示:

nv.addGraph(function() {
var chart = nv.models.multiBarChart()
            .stacked(true)

chart.xAxis
    .tickFormat(d3.format(',f'));

chart.yAxis
    .tickFormat(function(d) { return '$' + d3.format(',f')(d) });

d3.select('#chart1 svg')
    .datum(test_data2)
  .transition().duration(500).call(chart);

nv.utils.windowResize(chart.update);

return chart;
});

有人能解释一下如何让它发挥作用吗?更重要的是——为什么?感谢任何指导!

4

2 回答 2

16

我一打开赏金就解决了问题(d'oh!)

这对我有用

.tickFormat(function(d){return d3.time.format('%d-%b')(new Date(d));})

诀窍是在创建此轴后重新格式化 nvd3 的数据

于 2013-01-22T22:55:40.723 回答
4

JavaScript 时间戳是毫秒,所以你应该在使用它之前将 Unix 时间戳乘以 1000。

于 2012-12-20T05:37:57.423 回答