2015-04-13 3 views
0

Я пытаюсь создать пузырьковую диаграмму на основе примера из d3-вики. http://bl.ocks.org/mbostock/4063269Получение данных из json-файла для D3-пузырьковой диаграммы

К сожалению, я все еще на начальном уровне javascript и не понимаю какой-либо код.

Компоновка JSON здесь: http://pastebin.com/QAMBfLjr

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

кажется кусок кода, мне нужно, чтобы изменить это:

function recurse(name, node) { 
    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); 
    else classes.push({packageName: name, className: node.name, value: node.size}); 
} 

Так что я подставляя экземпляры детей на пути к тому, что я хочу, чтобы перебрать в формате JSON. Затем я меняю имя клавиш, которые я хочу.

facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"] 

Так что часть кода выглядит следующим образом:

function recurse(name, node) { 
    if (node.facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"]) node.facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"].forEach(function(child) { recurse(node.value, child); }); 
    else classes.push({packageName: value, className: node.value, value: node.count}); 
} 

Но это не работает. Я ничего не вижу на странице, а вывод на консоль говорит:

Uncaught TypeError: Cannot read property 'facet_pivot' of undefined 

Может ли кто-нибудь помочь мне указать мне в правильном направлении?

Спасибо!

Добавление jsfiddle: http://jsfiddle.net/jwhite/4o6tbe0w/

+0

Вы переходящий в правильном файле JSON в этой строке? –

+0

d3.json ("flare.json", функция (ошибка, корень) –

+0

Добавление скрипта было бы полезно также ... https://jsfiddle.net/ –

ответ

0

Так что я понял это. Я не видел, что json-файл, который я использую, отличается от того, который поставляется с примером.

После игры вокруг немного в консоли Dev я понял, я должен был изменить функцию ProcessData на следующее:

 function processData(data) { 
      var obj = data.facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"]; 
      var newDataSet = []; 

      for(var prop in obj) { 
      newDataSet.push({name: obj[prop].value, className: obj[prop].value.toLowerCase(), size: obj[prop].count}); 
     } 
     return {children: newDataSet}; 
    } 
Смежные вопросы