Я пытаюсь создать узлы спутника для узлов основного графика под маской силовой структуры. Каждый узел должен иметь один или несколько соответствующих подключенных к нему узлов соответствующего узла.Как создать спутниковые узлы в главном узле в графах компоновки D3.js
Вот jsfiddle, который показывает намерение (этот пример имеет фиксированное положение и никакой силы правящей спутниковый узел
http://jsfiddle.net/guidoextras/zLt2sne3/1/
node.append("circle")
.attr("class", "planet_node")
.attr("r", function(d) { return d.weight * 2 + 12; })
.style("fill", function(d) { return color(1/d.rating); });
node.append("circle")
.attr("r", 5)
.attr("class", "satellite_node")
.attr("cx", function(d) { return d.weight * 2 + 25; })
.attr("cy", 0)
.style("stroke-width", "1")
.style("stroke", "black")
.style("fill", "cyan");
Спутниковые узлы должны:.
- быть прикрепленный к основному узлу по линии связи на фиксированном более коротком расстоянии. Расстояние связи должно быть фиксированным.
- быть под силой, которая приходит из своего основного узла (планеты) и не подвергается влиянию других (это, вероятно, не должно быть проблемой, если расстояние связи всегда фиксировано)
- , когда для одного и того же планетного узла существует больше узлов спутника, ожидается, что они могут оттолкнуть друг друга, чтобы они не занимали одну и ту же позицию.
Я имею в виду, что для достижения этой цели я должен:
- рассмотреть все спутниковые узлы, как обычные узлы в одних и тех же наборов данных
- соблюдение linkdistance связей между спутниковыми узлами и планеты узлов в быть короче (или фиксированная) < - не знаю, как это можно сделать на конкретных ссылок/узлов
Так в чем ваш вопрос? Вы пробовали просто добавить эти «спутниковые» узлы в макет силы с подключениями к их родителям? –
Я сделал, но получил их под влиянием тех же правил силы. Я понял, что могу добавить функцию к силе, которая решает проблему. : .linkDistance (function (d) {return (d.type == "SATELLITE"? "10": 120)}) – gextra