我是NVD3的新手。我试图从销售人员的Matrix报告中获取数据,并在Line plus条形图中显示该数据。好像我得到没有数据的图表。在特定位置悬停工具提示时,它显示NAN。所以我认为我无法在报告中正确构建数据。所以你们有任何建议,如果可能的话你也可以粘贴代码。 提前致谢。 我把这作为参考并尝试。 http://nvd3.org/examples/linePlusBar.html
答案 0 :(得分:0)
正如您在评论中所说,测试数据一切正常。然后,问题必须与解析数据的方式有关。此外,您在使用nvd3时遇到一些问题。
快速查看代码会显示一些问题:
以下一行是写' + matrixReportId'在每个请求中:
$.ajax('/services/data/v29.0/analytics/reports/+matrixReportId', {
我想你可能想写matrixReportId
的内容,对吧?所以你需要这样做:
$.ajax('/services/data/v29.0/analytics/reports/' + matrixReportId, {
您正在对空值数组执行chartData.push()。只有在将元素添加到数组后才应该这样做:
$.each(response.groupingsDown.groupings, function(di, de) {
var values = [];
$.each(response.groupingsAcross.groupings, function(ai, ae) {
values.push({"x": ae.label, "y": response.factMap[de.key+"!"+ae.key].aggregates[0].value});
});
chartData.push({"key":de.label, "values": values});
});
每次数据更改时,不都应重新创建图表。您应该只更改基准,然后更新图表。
您忘记致电nv.utils.windowResize()。
我编辑了jsfiddle以包含这些更改。请测试一下: https://jsfiddle.net/egLgaxc4/5/
另外,你可能最好不要使用jquery,因为d3 + jquery会变得非常沉重。 D3有自己的ajax(看看d3.xhr),foreach和选择方法。你真的不需要jquery。
在这里,我创建了一个仅使用d3:https://jsfiddle.net/fwuzk3y6/5/
的示例