D3 селективный зум

Я работаю над макетом принудительно ориентированного графа с некоторыми дополнительными функциями: выбираемые ссылки / узлы, всплывающие подсказки, эффект «рыбий глаз» и, что важно для моего вопроса, масштабирование и панорамирование.

Теперь масштабирование работает очень хорошо, например так:

d3 ... .append('svg:g').call(d3.behavior.zoom().on("zoom", redraw))... 

Где функция перерисовки выглядит следующим образом ...

function redraw() {
  trans = d3.event.translate;
  scale = d3.event.scale;
  vis.attr("transform", "translate(" + trans + ")" + " scale(" + scale + ")");
}

Однако этот метод увеличивает масштаб всей графики SVG, включая размеры шрифтов, края графика, ширину штрихов линий, окружающих узлы, и т. Д.

Это как-то возможноне увеличить определенные элементы? Единственное решение, которое я видел до сих пор, это поставить такую строку (взяла ее отсюдаhttp://jsfiddle.net/56RDx/2/)

node.attr("font-size", (nodeFontSize / d3.event.scale) + "px");

в методе перерисовки, чтобы в принципе инвертировать масштабирование определенных элементов на лету. Моя проблема, однако (кроме того, что это безобразный хак), заключается в том, что мои ширины ребер динамически генерируются при рисовании графа (согласно некоторым свойствам графа ...), поэтому этот метод «инверсии» не работает ...

Ответы на вопрос(2)

Ваш ответ на вопрос