html - 使用 D3.csv 读取 csv 数据,每一列在单独的数组中

标签 html csv d3.js

一般来说,我是 D3.js 和 html/js 的新手,我正在尝试弄清楚如何使用 d3.csv 将 csv 文件读入单独的数组。我有一个如下所示的 csv 文件:

cause, prevalence, disability;
cancer, .3, .4;
aids, .5, .5;
malaria, .2, .1;

目前,我正在努力为“原因”、“患病率”和“残疾”创建数组。这是我正在使用的代码:

<html>
  <script type="text/javascript" src="../d3/d3.js"></script>
  <script type="text/javascript" src="../d3/d3.csv.js"></script>
  <script type="text/javascript">
    d3.csv('disability.csv', function(csv){
      var cause=csv[0];
      var prevalence=csv[1];
      var disability=csv[2];
      for (i=0;i<cause.length;i++)
      {
        document.write(cause[i] + "<br />");
      }
    })
  </script>
</html>

document.write 部分只是为了测试我是否读入了数据。

最佳答案

我猜你的意思是 var cause = csv[0] 来引用第一个变量/列?如果没有看到 csv 文件,则很难确定。

如果是这样,它不起作用的原因是 javascript 数组很遗憾没有访问单个变量/列的简单方法。

csv[0] 而是指您的 csv 的第一行。对于 d3 的 csv 模块,它将是一个字典,其中包含 csv 中每个变量(列名)的键,例如:

console.log(csv[0]);
{ cause: 'A', prevalence: .1, disability: .5 }

所以如果你想为每个变量/列创建单独的数组,你可以这样做:

var cause = [],
    prevalence = [],
    disability = [];
csv.map(function(d) {
    cause.push(d.cause);
    prevalence.push(d.prevalence);
    disability.push(d.disability);
}

然后您将剩下看起来像您要制作的三个数组。但在 d3 中,您实际上可以将整个 csv 对象作为 data 传递给您正在创建的任何内容,然后使用访问器函数 [例如.attr('y', function(d) { return d.prevalence; })] 在特定上下文中使用特定列/变量。

关于html - 使用 D3.csv 读取 csv 数据,每一列在单独的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999971/

相关文章:

javascript - 更改 DIV 内的文本会删除事件处理程序

Java如何从ArrayList中删除重复项

csv - 正确将 XLSX 转换为 CSV

c# - 创建csv文件时,Excel显示双引号

javascript - JSON 无法正确加载

Html5 时间字段始终在移动设备上将值与 24 小时格式进行比较

javascript - 使 anchor 链接下载文件

javascript - 在我的 PHP 页面中加载图像时出现问题

javascript - 与 d3.js 的平行坐标

javascript - 如何在基于聚类的树状图中设置颜色?