2012-10-09 18 views
47

Nie jestem w stanie zrozumieć, jak działa d3.call() oraz kiedy i gdzie go użyć. Here jest linkiem samouczka, który próbuję ukończyć.Funkcja biblioteki wywoływania biblioteki d3

Czy ktoś mógłby wyjaśnić, co konkretnie ten kawałek robi

var xAxis = d3.svg.axis() 
       .scale(xScale) 
       .orient("bottom"); 

svg.append("g").call(xAxis); 
+0

link podałeś wyjaśnia, co 'call()' robi – Ibu

+9

Yea, ale nadal nie jestem w stanie uzyskać tego, co svg.append ("g") .call (xAxis); robi :( – Andy897

+1

zobacz https://github.com/d3/d3-selection/blob/master/README.md#selection_call –

Odpowiedz

75

myślę Sztuką jest, aby zrozumieć, że OśX to funkcja, która generuje kilka elementów SVG. W rzeczywistości jest to funkcja zwrócona przez d3.svg.axis(). Funkcje skalowania i orientowania są tylko częścią składni łańcuchów (czytaj więcej tutaj: http://alignedleft.com/tutorials/d3/chaining-methods/).

Tak więc svg.append("g") dołącza element grupy SVG do svg i zwraca odniesienie do niego w formie selekcji (ta sama składnia łańcucha działa tutaj). Kiedy używasz call w zaznaczeniu, wywołujesz funkcję o nazwie xAxis na elementach zaznaczenia g. W tym przypadku uruchamiasz funkcję osi, xAxis, w nowo utworzonej i dołączonej grupie, g.

Jeśli to nadal nie ma sensu, składnia powyżej jest równoznaczne z:

xAxis(svg.append("g")); 

lub:

d3.svg.axis() 
     .scale(xScale) 
     .orient("bottom")(svg.append("g")); 
+0

jak można edytować elementy G svg.axis()? Mam etykiety, które krwawią do siebie nawzajem i chcę zastosować do nich transformację, ale nie mogę uzyskać dostępu do tych elementów – CQM

+0

Sprawdź odpowiedź tutaj http://stackoverflow.com/questions/12825630/assign-ids-to-individual-axis- text-elements/12849772 # 12849772 Po wybraniu tekstu lub elementów zaznaczania, powinieneś być w stanie zastosować transformacje, jeśli chcesz. – Superboggly

+0

Czy jest jakaś różnica między tym, aby wywołać xAxis? – st4rgut

Powiązane problemy