在显示带有Ajax请求的nvd3图表时,图表正在连线。所以我认为问题是由于异步调用延迟而发生的(可能是图表在加载完整数据之前显示等)。所以我使用了承诺,但我仍然遇到同样的问题。请参阅plunker http://plnkr.co/edit/AcIpmki7GNvcoT6Z38Pm?p=preview。
如果更改日期范围滑块,主图表将无法正常显示。我不确定问题出在哪里?在搜索了论坛中的一些帖子之后,我遇到了一些像时间序列中的差距,这是由于那个原因吗?如果是这种情况,我该如何解决时间序列差距问题?我搜索了nvd3网站,但是我找不到任何关于填补时间序列数据空白的文档。一些论坛帖子建议使用c3.js代替nvd3,但我不知道转移到c3.js真的值得吗?根据我的经验,我觉得nvd3是最好的,我不想离开nvd3。
如果nvd3网站提供更多样本,包括实时系列数据和一些常见问题的文档,如填补时间序列中的空白,排序数据等,对初学者来说真的很有用。
由于我的项目发布日期即将来临,我不知道现在该怎么办?转向c3.js对我来说是最糟糕的选择。我也从同一个plunker附上了错误屏幕。
我觉得我使用json数据进行排序没有问题:
angular.forEach($scope.data, function(
series, index) {
series.values.sort(function(a, b) {
return a.x - b.x;
});
});
答案 0 :(得分:0)
您可以看一些问题:
我同意shabeer90,数据很时髦。您有多个值同时发生。
您的排序是正确的,但是您在代码中的位置并不起作用...尝试将其添加到ajax调用的响应中(在设置$ scope.data = data之后)。
此外,您需要进行我在another question中概述的更改(到lineWithFocusChart模型中的nvd3)。
访问xScale有点棘手......在此图表中,您需要查看以下内容:
$scope.options = { chart: { type: 'lineWithFocusChart', height: 450, margin : { top: 20, right: 20, bottom: 60, left: 40 }, transitionDuration: 500, lines : { // <-- add this xScale : d3.time.scale() }, lines2 : { // <-- add this too xScale : d3.time.scale() }, xAxis: { ticks : d3.time.months, <-- add the time interval axisLabel: 'X Axis', tickFormat: function(d){ return d3.time.format('%d/%m/%y')(new Date(d)) } }, x2Axis: { tickFormat: function(d){ return d3.time.format('%d/%m/%y')(new Date(d)) } }, yAxis: { axisLabel: 'Y Axis', tickFormat: function(d){ return d3.format(',.2f')(d); }, rotateYLabel: false }, y2Axis: { tickFormat: function(d){ return d3.format(',.2f')(d); } } }
};