我对如何使用我的数据集配置我的 NVD3 图形感到很困惑。
这是一个简单的折线图,我的数据集包含跨越多年的值。我需要以精简的形式显示这些值,即图表将仅显示 1 年(1 月 -> 12 月),数据集中的每一年都是图表上的单独一行。
目前,如果我绘制数据集,我会绘制所有年份(例如 2008 年 1 月 -> 2010 年 12 月)。这是我的意思的 jsFiddle:http: //jsfiddle.net/xABVB/
我不知道在哪里更改 NVD3/D3 设置。这会在 x 轴域或范围内定义吗?还是需要修改滴答计数?
最好,我希望我的数据集保留为 Date 对象。
我的代码的快速概述(取自 jsFiddle):
var chart, years;
chart = nv.models.lineChart().x(function(dataPoint) {
return dataPoint[0];
}).y(function(dataPoint) {
return dataPoint[1];
});
chart.yAxis.axisLabel('Value').tickFormat(function(value) {
return value;
});
chart.xAxis.axisLabel('Date').rotateLabels(-45).tickFormat(function(date) {
return d3.time.format('%b %d')(new Date(date));
});
values = getValues();
if (values === void 0) {
d3.select(".target svg").datum([]).call(chart);
} else {
years = [];
_.each(values, function(element, index, list) {
return years.push({
key: element[0][0].getFullYear() + " Year",
values: element
});
});
d3.select(".target svg").datum(years).call(chart);
}
nv.addGraph(chart);
// Dummy data covering 3 consecutive years.
function getValues(){
return [[[new Date("2008-01-31T00:00:00.000Z"),10],[new Date("2008-02-29T00:00:00.000Z"),20],[new Date("2008-03-24T00:00:00.000Z"),30],[new Date("2008-04-22T00:00:00.000Z"),40],[new Date("2008-05-19T00:00:00.000Z"),50]],
[[new Date("2009-01-31T00:00:00.000Z"),20],[new Date("2009-02-30T00:00:00.000Z"),30],[new Date("2009-03-22T00:00:00.000Z"),40],[new Date("2009-04-27T00:00:00.000Z"),50],[new Date("2009-05-30T00:00:00.000Z"),60]],
[[new Date("2010-01-06T23:00:00.000Z"),30],[new Date("2010-02-05T23:00:00.000Z"),35],[new Date("2010-03-31T23:00:00.000Z"),45],[new Date("2010-04-30T23:00:00.000Z"),50],[new Date("2010-05-29T23:00:00.000Z"),60]]]
}