Я использую this nice force layout с Flowingdata.com для создания сетевой диаграммы.d3.js force layout авто масштабирование/масштаб после загрузки
Моя схема в настоящее время показывает, между 5 и 750 узлов с их отношениями. Он отлично работает с некоторыми пользовательскими изменениями, соответствующими моим потребностям. Как бы то ни было, я не могу работать. У меня есть viewBox
с preserveAspectRatio
для автоматической установки контейнера, в котором он находится. Но в зависимости от количества узлов всегда есть некоторые узлы вокруг краев (главным образом верх и buttom), которые обрезаются. И если узлов очень мало, они показывают их посередине с огромным пустым пространством вокруг него (это большой контейнер, в котором он находится).
Есть ли способ автоматического масштабирования или масштабирования макета для автоматической установки? Так что большой макет несколько уменьшился, а малый макет увеличился. У меня есть настройка события масштабирования, поэтому прокрутка и панорамирование работают как шарм. Но может ли он автоматически сделать это, чтобы соответствовать содержимому?
Код d3.js запуска:
vis = d3.select(selection)
.append("svg")
.attr("viewBox", "0 0 " + width + " " + height)
.attr("preserveAspectRatio", "xMidYMid meet")
.attr("pointer-events", "all")
.call(d3.behavior.zoom().scaleExtent([.1, 3])
.on("zoom", redraw)).append('g');
Звучит как хороший способ, чтобы начать. Однако, где вы получили объект масштабирования? Я пробовал d3.behavior.zoom и d3.event, но первый не имеет метода scale(), и последний говорит, что не может называть метод 'scale' of null. – DaFrenk