从csv文件读入时使用变量解析D3js数据

从csv文件读入时使用变量解析D3js数据,csv,d3.js,Csv,D3.js,我是D3js新手,希望以动态方式使用它,也就是说,基于用户想要绘制的数据系列,我希望能够将变量传递给一个函数,当从csv文件提取数据时,该函数用于解析数据 我找到的示例中的代码段都显示了从csv或tsv文件读取数据,如下所示: d3.tsv("data.tsv", function(error, data) { if (error) throw error; data.forEach(function(d) { d.date = parseDate(d.date); d.clo

我是D3js新手,希望以动态方式使用它,也就是说,基于用户想要绘制的数据系列,我希望能够将变量传递给一个函数,当从csv文件提取数据时,该函数用于解析数据

我找到的示例中的代码段都显示了从csv或tsv文件读取数据,如下所示:

d3.tsv("data.tsv", function(error, data) {
  if (error) throw error;

  data.forEach(function(d) {
  d.date = parseDate(d.date);
  d.close = +d.close;
});

x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.close; }));
其中指定了csv头/键。我想用变量ie、varX和varY替换d.date和d.close,变量ie、varX和varY将传递给函数,以便显示的数据可以变化。我想到的功能结构是:

 function BarChart(filePath,varX,varY,loc){

  //put in the code above modified to use varX and varY in place of d.date and d.close
  //other code required to create the chart
  }
我尝试了几种不同的方法使用d.varX,或者只是使用varX,并在web上进行了大量阅读,以找到一些东西,但都没有成功。我不确定D3js是否打算以这种方式使用。任何帮助都将不胜感激


谢谢。

你可以这样称呼一个功能:

  graph({height: 200, width:400, id: "ccag", xE:d3.scale.ordinal().domain(["I", " II", "III", "IV", "V"]),
    data: [[{ x: 0, y: 109117 },{ x: 1, y: 22546 },{ x: 2, y: 29449 },{ x: 3, y: 43711 },{ x: 4, y: 26604 }],[{ x: 0, y: 7481 },{ x: 1, y: 5328 },{ x: 2, y: 10315 },{ x: 3, y: 6218 },{ x: 4, y: 4330 }]],
    color:[["#1c3848"],["#36a8e1"]]
    })();
然后,使用函数绘制图形:

function graph(a) {
  return function () {
    var margin = {top: 20, right: 20, bottom: 20, left: 35},
    w = a.width - margin.left - margin.right,
    h = a.height - margin.top - margin.bottom,
    fnum = d3.format(",");

    //Original data
    var ccad = a.data;
    var stack = d3.layout.stack();

    //Data, stacked
    stack(ccad);
.....
.....
或者,您可以将文件名传递给函数:

graph({file:"newTSV.tsv"})
function graph(a) {
  return function () {
    d3.tsv(a.file, function(data) { ....
那么关于你的功能:

graph({file:"newTSV.tsv"})
function graph(a) {
  return function () {
    d3.tsv(a.file, function(data) { ....

拉尔斯,谢谢你告诉我我想要的答案!我想我用错了关键词来搜索。再次感谢。