2015-05-24 1 views
1

У нас есть некоторые data.csvКак Подмножество столбца из загруженных в CSV в D3 JavaScript из

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; 
    }); 
    }); 

Я пытаюсь воссоздать следующее D3 block, что довольно просто. Единственное отличие: я загружаю данные CSV, а не простой одномерный массив в примере кода.

Запустите его в Chrome-разработчике, и вы достигнете значения Can not read length неопределенной ошибки в строке 60, где я привязываю данные к функции pie().

Мои вопросы:

  • Am I загрузки данных в формате CSV в правильно?
  • Как я могу подмножить столбец Total только для использования в качестве значений в функции pie()? Кажется, что должен решить проблему.

ответ

1

Проблема заключается в том, что ваша переменная набора данных не определена при попытке получить к ней доступ за пределами функции обратного вызова. Обратите внимание на то, что mbostock's answer по другому вопросу.

Добавить код для создания представления в функции обратного вызова метода d3.csv.

Чтобы использовать Общий столбец для значений, которые вы можете использовать value method of the pie layout так:

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

Demo

+0

Демо очень щедр, работает. Я видел ответ mbostock, связанный, но до сих пор не смог определить точную реализацию. спасибо –