Было показано много случаев для геометрического масштабирования, ориентированного по силе, с помощью SVG Geometric Zooming.
В геометрическом масштабировании мне нужно добавить атрибут преобразования в функцию масштабирования. Однако при семантическом масштабировании, если я добавлю только атрибут преобразования в node, ссылки не будут подключаться к node. Итак, мне интересно, существует ли решение для геометрического масштабирования для диаграммы направленности силы в d3.
Вот мой пример с геометрическим масштабированием после предыдущего случая. У меня две проблемы:
- Когда я уменьшаю масштаб, а затем перетаскиваю весь граф, график будет странно исчезать.
- Используя ту же функцию перерисовки
function zoom() { vis.attr("transform", transform); } function transform(d){ return "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")"; }
Это обновляет только один атрибут svg-элемента "transform". Но как заставить функцию изменить позицию node?
Но я хочу сделать семантическое масштабирование. Я попытался изменить функцию масштабирования и преобразования, но не уверен, как правильно это сделать. Здесь я пытаюсь. Функции, которые я изменил:
function zoom() { node.call(transform); // update link position update(); } function transform(d){ // change node x, y position, not sure what function to put here. }