D3 Zoom selektywny

Pracuję nad wymuszonym układem graficznym z dodatkowymi funkcjami: wybieralne łącza / węzły, podpowiedzi, efekt rybiego oka i - ważne dla mojego pytania - powiększanie i przesuwanie.

Teraz powiększanie działa bardzo dobrze w ten sposób:

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

Gdzie wygląda funkcja odświeżania ...

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

Jednak ta metoda powiększa całą grafikę SVG, w tym rozmiary czcionek, krawędzie wykresu, szerokości obrysu linii otaczające węzły itp.

Czy to jakoś możliwenie aby powiększyć niektóre elementy? Jedynym rozwiązaniem, jakie do tej pory widziałem, jest umieszczenie takiej linii (wziął ją stądhttp://jsfiddle.net/56RDx/2/)

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

w metodzie przerysowywania, aby w zasadzie odwrócić powiększanie niektórych elementów w locie. Moim problemem jest jednak (poza brzydkim hackiem), że moje szerokości krawędzi są generowane dynamicznie na rysunku graficznym (zgodnie z niektórymi właściwościami wykresu ...), więc ta metoda "inwersji" nie działa ...

questionAnswers(2)

yourAnswerToTheQuestion