2013-08-19 3 views
0

Я новичок в d3js. Я прошел через несколько примеров визуализации TreeMap и заметил, что данные имеют такую ​​же иерархическую структуру:D3 treemap json data format

{ 
"name": "flare", 
    "children": [ 
     ... 
    ] 
     ... 
} 

Но что, если у меня есть массив объектов с одинаковым набором свойств без вложенности:

[ 
    { 
    "CourseID": "15.010B", 
    "Subject": "15.01", 
    "Section": "B", 
    "Department": "Managerial Economics", 
    "Professor": "Doyle", 
     ... 
    }, 
    { 
    "CourseID": "15.010B", 
    "Subject": "15.01", 
    "Section": "B", 
     ... 
    }, 
     ... 
] 

Должен ли я сделать это иерархическим? Можете ли вы предоставить мне пример визуального treemap для этого типа формата данных. Заранее спасибо.

ответ

2

d3 встроенный nest функции может легко создать этот тип иерархических данных для вас, например:

var nest = d3.nest() 
    .key(function(d) { return d.Department; }) 
    .key(function(d) { return d.Subject; }) 
    .key(function(d) { return d.Section; }) 
    .entries(_dataset_name_); 

создаст соответствующий иерархический набор данных.

+0

Спасибо, но без атрибута «children» в вашем JSON вы не получите никакой иерархической упаковки, не так ли? Дело в том, что я хочу, чтобы функция d3.layout.treemap (data) создавала свойства x, y, dx, dy в каждом объекте для меня, чтобы рисовать прямоугольник для каждого из них. –

+1

Свойство «children» является стандартным. Вы можете указать любое свойство, которое вам нравится для детей, установив пользовательскую функцию доступа через https://github.com/mbostock/d3/wiki/Treemap-Layout#wiki-children. –

+0

Спасибо, Скотт. Поэтому необходимо иметь определенное свойство в качестве детей, и в этом случае d3 вычислит для меня свойства x, y, dx, dy, верно? –

0

Форматирование вашего JSON в иерархическую структуру может быть утомительным. Я использовал Google Refine, что позволило мне импортировать файлы CSV, JSON или Excel и «уточнить» их в структуре JSON по своему выбору. Кажется, что вам немного больно настроить, но как только вы закончите, у вас будет инструмент для управления вашими данными в структуры вашего выбора в будущем.