2016-11-28 8 views
15

Próbowałem wykonać kod składanego drzewa, jak wspomniano here. Ale wydaje się, że metoda przekątna nie ma zastosowania w wersji 4 (może się mylę).Gdzie jest d3.svg.diagonal()?

Dla:

var diagonal = d3.svg.diagonal() 

otrzymuję ten błąd:

TypeError: Cannot read property 'diagonal' of undefined 

jeśli tak, jaka jest equiavalent w v4? Przeglądanie referencji API d3.js nie dało mi żadnej wskazówki.

Odpowiedz

12

Zobacz GitHub wydanie here.

Podczas gdy kwestia jest nadal otwarta, nie wydaje się, że pan Bostock spieszy się z ponownym wdrożeniem go w wersji 4. Dlaczego? Ponieważ jest to trywialne do realizacji siebie:

function link(d) { 
    return "M" + d.source.y + "," + d.source.x 
     + "C" + (d.source.y + d.target.y)/2 + "," + d.source.x 
     + " " + (d.source.y + d.target.y)/2 + "," + d.target.x 
     + " " + d.target.y + "," + d.target.x; 
} 
+1

odczuwalna w przykładzie powyżej, widziałem wiele przypadków, gdzie „y” jest wykorzystywane do „x” i vice versa . Jaki jest powód? –

+2

@MupparthyRavindranath, horizontol vs pionowy rysunek do układów drzew. Rysowanie w pionie odwraca wartości X i YS jak w tym przykładzie (http://bl.ocks.org/mbostock/ff91c1558bc570b08539547ccc90050b) – Mark

12

Aktualizacja: the accepted answer jest nieaktualny od D3 v4.9 został zwolniony.

Wersja D3 4.9.0 wprowadziła link shapes, które mają taką samą funkcjonalność starego d3.svg.diagonal w D3 v3.

Według API:

The link shape generates a smooth cubic Bézier curve from a source point to a target point. The tangents of the curve at the start and end are either vertical, horizontal or radial.

Istnieją trzy metody:

Tak więc, na składanym drzewa jak ta, którą powiązana definiuje ścieżkę d atrybut jako:

.attr("d", d3.linkHorizontal() 
    .x(function(d) { return d.y; }) 
    .y(function(d) { return d.x; })); 
+0

Jak zaimportować (es6) część 'd3.linkHorizontal()'? – erp

+0

Wyślij to jako nowe pytanie. –

+0

Ok, pomyślałem, że to było bardziej precyzyjne pytanie do twojej odpowiedzi, bez zmartwień. – StackoverflowLoser