У меня есть графическая визуализация.
Я добавил масштабирование, масштабируя <g>
, который содержит все.
Это также изменяет размеры узлов (кругов) и их меток.D3.js - Масштабирование при сохранении размеров, с d3.forceSimulation()
Из того, что я видел, сохраняя размер и только репозиционирование делается like this:
function zoomed() {
var t = d3.event.transform;
circle.attr("transform", function(d) {
return "translate(" + t.applyX(d[0]) + "," + t.applyY(d[1]) + ")";
});
}
Однако это не будет работать для меня, потому что я уже использую перевод для размещения узлов на d3.forceSimulation()
. Я мог бы применить масштабирование, как это было сделано выше, но это все отпадет, когда симуляция начнется снова - например. при перемещении узла, который делается с помощью:
function dragstarted() {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
...
Как я мог сочетать моделирование и масштабирование?
- Один из способов, я думаю, состоит в том, чтобы уменьшить все узлы с помощью инверсного масштаба до того, что используется для масштабирования.
- Другой путь может быть укладка вниз вещи -. Меньше шрифта, меньшие круги и т.д.
- Другой способ может быть подделке с силами, так что узлы идут дальше друг от друга по приближая