загрузите json в d3.js для использования в радиальной Дендрограмме

так javascript новичок здесь, стучал головой о том, как получить JSON source json
загружается в d3.JS радиальный дендрограмм граф.
находится здесь: d3.пример графа Радиальной дендрограммы js

текущий план заключается в импорте JSON в python
или, возможно, преобразовать json в 2 столбца (id,value) csv с помощью python.

но я хотел бы понять, как это может быть достигнуто, поскольку я бью головой по javascript и d3.js уже почти 2 дня.

В основном я пытаюсь загрузить данные в d3.js
разрешить визуализацию следующего

с корневой системой

EDIT: чтобы показать обнадеживающий поток усиков

system --> model_type --> system_revision --> firmware_version --> firmware_build, system_name

чтобы следовать примеру csv, приведенному по ссылке выше.

id,value
systems,
systems_PowerEdge R720xd,
systems_PowerEdge R720xd_I,
systems_PowerEdge R720xd_I_1.50.50,
systems_PowerEdge R720xd_I_1.50.50_34,ldc0000

это тот выход, который я хотел бы получить.

1 ответ

  1. Просто возвращаясь к этому вопросу вчера. Как я сказал в своем комментарии, Вам нужно преобразовать структуру JSON в иерархию «родитель/потомок», требуемую d3.иерархия . К сожалению, ваши исходные данные на самом деле не являются иерархическими, поэтому я вижу единственный способ сделать это очень вручную:

    var root = {
        id: "system",
        children: []
      };
      data.systems.forEach(function(d,i){
        var key = Object.keys(d)[0],
            sysInfo = d[key].sysInfo;
        root.children.push({
          id: sysInfo.system_model,
          children: [{
            id: sysInfo.system_revision,
            children: [{
              id: sysInfo.firmware_version,
              children: [{
                id: sysInfo.firmware_build
              }, {
                id: key
              }]
            }]
          }]
        });
      });
    
      root = d3.hierarchy(root);
    

    После этого код дендрограммы остается неизменным, за исключением фиксации текстовых меток:

    .text(function(d) { console.log(d); return d.data.id });
    

    Полный рабочий код .