我正在使用nvd3.js生成一个多栏图表.这是我的代码:
$(function() {
$.get('/charts/objects_created/')
.done(function(resp) {
init_graphs(resp);
});
function init_graphs(data) {
nv.addGraph(function() {
var chart = nv.models.multiBarChart();
chart.xAxis.tickFormat(function(d) {
return d3.time.format('%x')(new Date(d));
});
chart.yAxis.tickFormat(d3.format(',d'));
d3.select('.chart#recent_activity svg')
.datum(data)
.transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的数据:
[
{
"values":[
{
"y":3,
"x":"04/05/2013"
},
{
"y":1,
"x":"04/11/2013"
},
{
"y":3,
"x":"04/12/2013"
}
],
"key":"Apples"
},
{
"values":[
{
"y":3,
"x":"04/05/2013"
},
{
"y":1,
"x":"04/12/2013"
},
{
"y":0,
"x":"04/11/2013"
}
],
"key":"Oranges"
}
]
Run Code Online (Sandbox Code Playgroud)
它看起来很棒:
但堆叠失败:
如您所见,最后一个堆栈不正确; 橘子被放在苹果部分的中间.此外,虽然很难看到,但第二列中的0橙色有1个像素条,位于y轴的3处.
任何人都可以看到我做错了什么,或者是否有nvd3的错误?
谢谢!
如果仔细查看数据,您会发现两个类别中日期更改的顺序,这导致图表堆叠时出现第三层。分组时效果很好。
只要注意数据的顺序即可。
这是更新后的数据。
[{
"values" : [{
"y" : 3,
"x" : "04/05/2013"
}, {
"y" : 1,
"x" : "04/11/2013"
}, {
"y" : 3,
"x" : "04/12/2013"
}],
"key" : "Apples"
}, {
"values" : [{
"y" : 3,
"x" : "04/05/2013"
}, {
"y" : 0,
"x" : "04/11/2013"
}, {
"y" : 1,
"x" : "04/12/2013"
}],
"key" : "Oranges"
}]
Run Code Online (Sandbox Code Playgroud)