2014-10-23 6 views
0

У меня, вероятно, довольно простой вопрос.диаграмма сети d3.js zoom

Вот моя простая схема enter link description here

И я хотел бы реализовать масштабирование и функциональности, используя поведение descibed здесь enter link description here. Но я не могу заставить его работать, может быть, вы заметите проблему.

Спасибо за ваше время.

Вся трансфокация в функциональности, кажется, обращаться с этим заданием и функцией:

svg = d3.select("body").append("svg").attr("width", width).attr("height", height) 
.call(d3.behavior.zoom().x(x).y(y).scaleExtent([1, 8]).on("zoom", zoom)); 

function zoom() { 
svg.clearRect(0, 0, width, height); 
} 
+1

см это [скрипка] (http://jsfiddle.net/yeQS2/141/) – Gilsha

+0

колдовства. спасибо большое –

ответ

2

кода вы испробовали для масштабирования используется для холста. Вы можете использовать атрибут transform для масштабирования в svg. Вы можете поместить весь граф в элемент (group) и применить атрибут transform к элементу.

svg = d3.select("body") 
     .append("svg") 
     .attr("width", width) 
     .attr("height", height) 
     .call(d3.behavior.zoom().x(x).y(y).scaleExtent([1, 8]).on("zoom", zoom)) 
     .append("g"); 

function zoom() { 
    svg.attr("transform","translate("+ d3.event.translate+") scale("+d3.event.scale+")"); 
} 

Вот fiddle

+0

Как можно было бы иметь противоположность - уменьшить масштаб, а также увеличить масштаб? Couse в вашей скрипке можно только уменьшить до начального вида, но не более –

+0

Поскольку в коде мы ограничили уровень масштабирования минимальным масштабом 1 и максимальным масштабом 8 по этому коду 'd3.behavior.zoom(). ScaleExtent ([1, 8]) '. Вы можете удалить «scaleExtent», чтобы получить бесконечное увеличение и уменьшение. – Gilsha

+0

dough..missed that property .. Извините мое невежество, но можно ли надеть шапку «уменьшить», как мы делаем на «zoom-in»? –

Смежные вопросы