2013-03-04 3 views
0

В настоящее время я делаю первые шаги в визуализации данных D3. До сих пор учебники D3 мне очень помогли. Учебное пособие по круговой диаграмме http://bl.ocks.org/mbostock/3887235, однако, не объясняет дальнейшей структуры данных для круговых диаграмм.Структура данных для круговых диаграмм D3

Мои данные более сложны, чем структура метки/значения в примере. У меня есть годовые итоговые данные и импорта данных импорта конкретного товара, хранящегося в формате JSON:

var data = [{"year":"2001","total_import":"100000","import_specific_good":"25000"},{"year":"2002",...}]; 

Если я понимаю правильно учебник пирог() перебирает ЖЕ записи каждого другого объекта.

Что делать, если мне нужны конкретные РАЗЛИЧНЫЕ значения объекта SAME?

Меня не интересует пирог, показывающий весь годовой общий импорт в виде порций, но ежегодный импорт конкретного товара в виде части годового общего импорта. Мои значения будут равны 1. (total_import - import_specific_good) и 2. import_specific_good.

Является ли моя предлагаемая структура данных правильной для того, что я хочу делать? Или мне нужно реструктурировать все, чтобы значения за каждый год сохранялись в отдельной переменной?

var data_2001 = [{"label":"Total Import","value":"100000"},{"label":"Import of Specific Good","value":"25000"}]; 

var data_2002 = [{"label": ...}]; 

ответ

0

Вы не должны использовать определенную структуру данных - вы можете (и нужно будет в любом случае) изменить пример, чтобы вы могли использовать все, что угодно! Таким образом, вы можете использовать свой первый JSON просто отлично. Поскольку у вас есть только 2 значения для показа, вы можете просто построить структуру, чтобы перейти на .data() на лету.

// for pie chart 
...data([json[index].total_import - json[index].import_specific_good, 
     json[index].import_specific_good])... 
... 
// similarly for the labels 

Я бы посоветовал хранить числа как числа (например, без кавычек) в вашем JSON, хотя - в противном случае вам придется конвертировать их числа в JavaScript.

+0

Это имеет смысл для меня относительно функции data(). Но как насчет 'var pie = d3.layout.pie() .sort (null) .value (function (d) {return WHAT COMES HERE ?;});'? Что мне делать с функцией pie()? PS: Спасибо за подсказку о string/integer. –

+0

Если вы вызываете 'pie()' с данными, указанными выше (то есть фактическими числами), вам не нужно указывать '.value()'. –

+0

Спасибо! Это сделал трюк. Поскольку у меня много данных, я могу теперь перебирать свой оригинальный json и создавать круговую диаграмму для каждого года. Очень удобно! –

Смежные вопросы