如何在D3JavaScript中从CSV加载的列子集

如何在D3JavaScript中从CSV加载的列子集,javascript,csv,d3.js,data-visualization,Javascript,Csv,D3.js,Data Visualization,我们有一些data.csv University,Total,Females,Males,Year,Type PortSaid,13817,6679,7138,2012,Public PortSaid,14790,7527,7263,2013,Public PortSaid,17295,8509,8786,2010,Public 6OctoberUniversity,12507,4297,8210,2012,Private 6OctoberUniversity,14608,5360,9248,2

我们有一些data.csv

University,Total,Females,Males,Year,Type
PortSaid,13817,6679,7138,2012,Public
PortSaid,14790,7527,7263,2013,Public
PortSaid,17295,8509,8786,2010,Public
6OctoberUniversity,12507,4297,8210,2012,Private
6OctoberUniversity,14608,5360,9248,2013,Private
我们尝试使用D3操作数据,并加载数据:

var dataset;

d3.csv("universities_data.csv", function(data) {
    data.forEach(function(d) {
      d.Females = +d.Females;
      d.Males = +d.Males;
      d.Total = +d.Total;
      d.Year = +d.Year
    dataset = data;
    });
  });
我试图重新创建以下内容,这非常简单。唯一的区别是:我加载的是CSV数据,而不是示例代码中的简单一维数组

在Chrome developer中运行它,您将在第60行遇到无法读取属性“length”的未定义错误,我将数据绑定到pie()函数

我的问题是:

  • 我是否正确加载csv数据
  • 我怎样才能对总数进行子集划分 列仅用作pie()函数中的值?看来 应该解决这个问题

问题在于,当您尝试在回调函数之外访问数据集变量时,该变量未定义。 检查mbostock的另一个问题的原因

添加用于在d3.csv方法的回调函数中创建表示的代码

要对值使用“总计”列,可以使用以下命令:

var pie = d3.layout.pie()
    .value(function(d) { return d.Total; })
    .padAngle(.02);

该演示非常慷慨,非常有效。我已经看到了mbostock答案的链接,但仍然无法理解具体的实现。非常感谢。