【发布时间】:2012-12-13 02:11:15
【问题描述】:
我使用的是 nvd3,但我认为这是关于时间刻度和格式的一般 d3.js 问题。我创建了一个简单的例子来说明这个问题(见下面的代码):
如果我省略 xAxis 的 .tickFormat,它可以在没有日期格式的情况下正常工作。通过下面的示例,我得到了错误:
未捕获的类型错误:对象 1326000000000 没有方法 'getMonth'
nv.addGraph(function() {
var chart = nv.models.lineChart();
chart.xAxis
.axisLabel('Date')
.rotateLabels(-45)
.tickFormat(d3.time.format('%b %d')) ;
chart.yAxis
.axisLabel('Activity')
.tickFormat(d3.format('d'));
d3.select('#chart svg')
.datum(fakeActivityByDate())
.transition().duration(500)
.call(chart);
nv.utils.windowResize(function() { d3.select('#chart svg').call(chart) });
return chart;
});
function days(num) {
return num*60*60*1000*24
}
/**************************************
* Simple test data generator
*/
function fakeActivityByDate() {
var lineData = [];
var y = 0;
var start_date = new Date() - days(365); // One year ago
for (var i = 0; i < 100; i++) {
lineData.push({x: new Date(start_date + days(i)), y: y});
y = y + Math.floor((Math.random()*10) - 3);
}
return [
{
values: lineData,
key: 'Activity',
color: '#ff7f0e'
}
];
}
示例(现已修复)在 nvd3 with date axis 中。
【问题讨论】:
-
在提出此类问题时,您应该为您的示例创建一个jsFiddle。它使回答问题的人更容易看到您的代码示例正在运行并且易于编辑。
-
这是个好主意。我尝试制作一个,但 css 看起来没有应用:jsfiddle.net/ultrasaurus/x7epG/3 -- 有人知道我做错了什么吗?
-
看起来小提琴不再工作了。它现在引用的库是 404。