将数据从 CSV 文件加载到 D3 中的 lineWithFocusChart

Loading data from a CSV file to a lineWithFocusChart in D3

我正在尝试从 CSV 文件加载数据并使用 lineWithFocusChart 模型将其呈现给 D3 图表。我是 D3 图表的新手,但能够理解基础知识的工作原理并通过示例。

这是我的代码:

nv.addGraph(function() {
  var chart = nv.models.lineWithFocusChart();
chart.xAxis.tickFormat(d3.format(',f'));
chart.x2Axis.tickFormat(d3.format(',f'));
chart.yAxis.tickFormat(d3.format(',.2f'));
chart.y2Axis.tickFormat(d3.format(',.2f'));
  d3.select('#chart svg').datum(testData()).call(chart);
  nv.utils.windowResize(chart.update);
  return chart;
});


function loadData()
{
  d3.csv("/data/datademo.csv", function(error, data) {
    if (error) {
      console.log("ERROR: " + error)
    } else {
      console.log("loadData: " + data);
      return data;
    }
  });
}


function testData() {
  var datasensors = loadData().map(function(data, i) {
    return {
      key: 'Sensor ' + i,
      values: data
    };
  });
  return datasensors;;
}
<div id="chart">
  <svg></svg>
</div>

我的 CSV 中的数据非常简单(假设加载 ECG 数据):

x,y
0,-69.743590
1,0.195360
2,0.195360
3,-1.758242

我遇到错误:

Uncaught TypeError: Cannot read property 'map' of undefined

图表甚至没有加载。

谁能帮我解决这个问题。

loadData().map(.......)应该在d3.csv("/data/datademo.csv".......)的回调函数中。

您现在正在尝试使用 loadData() 函数的 return,但数据尚未加载,这就是您成为 'undefined' 的原因。

希望对您有所帮助。