Пару месяцев назад я попытался combining Hierarchical Edge Bundling and Radial Reingold–Tilford Tree using d3.jsD3.js Добавление связей между элементами в радиальном дерево (иерархический край пакетирования элементов)
Я начал с СЭП и попытался сделать это в дерево. Вещи не сработали так, как я хотел, и я понял, что лучше начать с складного радиального дерева (не Рейнгольда Тилфорда) под другим углом.
Here is a JSFiddle of the radial tree
Модель данных также изменилась, поскольку элементы теперь имеют имя, дети и импорт (ссылки).
var flare =
{
"name": "root",
"children": [
{
"name": "test1.parent1","children": [
{"name": "test1.child11","children": [
{"name": "test1.child111"},
{"name": "test1.child112"}
]}
],"imports": ["test2.parent2","test3.parent3","test4.parent4"]
},
{
"name": "test2.parent2","children": [
{"name": "test2.child21"},
{"name": "test2.child22"},
{"name": "test2.child28","children":[
{"name": "test2.child281"},
{"name": "test2.child282"}
]}
],"imports": ["test3.parent3"]
},
{"name": "test3.parent3","imports": ["test4.parent4"]},
{
"name": "test4.parent4","children": [
{"name": "test4.child41"},
{"name": "test4.child42"}
]
}
]
};
Чтобы начать медленно, я хотел бы объединить non-interactive Hierarchical edge bundling от Майка Босток с текущим JSFiddle, но имея в виду, что взаимодействие будет часть его в дальнейшем.
Кроме того, только первый уровень должен иметь ссылки (родитель-родитель ссылку), как показано ниже (в результате чего я хочу):
Моей текущей самая большая проблема не в том, что ГЭБ не имеет «root», но дерево начинается с одного элемента. Итак, все, что я пробовал до сих пор, привело к большому беспорядку в центре дерева.
Обратите внимание, что в центре дерева есть круг, чтобы покрыть корни до уровня 1, поэтому дерево начинается с уровня 1 (родители).
var circle = svg.append("circle")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", diameter - 725.3)
.style("fill", "#F3F5F6")
.style("stroke-width", 0.2)
.style("stroke", "black");
В идеале, связи между родителями должны обновлять, когда уровень (не) разрушилась, как это делает для узлов и связей между уровнями, но это может прийти позже и может быть не так трудно после первоначального получение ссылок первого уровня для показа. Кроме того, при необходимости шаблон данных может измениться, но важны все 3 части информации (имя, дети и импорт).
Другим способом сделать это было бы возможность изменить данные, чтобы не включать корневую часть, и что она ведет себя точно так же, как сейчас. Частичные ответы также приветствуются.
Определенно не дубликат, но кажется связанным с [этим] (http://stackoverflow.com/q/30653093/1586231). –