2013-06-24 12 views
8

Używam układu sił d3 do tworzenia wykresu, a następnie przechowywania pozycji węzłów w bazie danych.Jak mogę wyświetlić wykres przy użyciu układu sił d3 z ustawionym początkowym położeniem i bez żadnego ruchu?

Następnym razem, gdy chcę wyświetlić wykres, odczytuję pozycje z bazy danych w węzłach, a następnie rozpoczynam układ sił.

To powoduje nieznaczne przesunięcie układu.

Czy istnieje sposób, aby wyświetlić wykres z zapisanych pozycji węzłów bez wywoływania force.start() w ogóle?

To, czego chcę, to tryb "tylko do odczytu", aby pokazać stabilny wykres utworzony przez inną osobę wcześniej.

/Hans

Odpowiedz

10

polecam do zapoznania się z documentation of the force layout. To jest naprawdę dobre.

Jak już wspomniano, należy ustawić atrybuty px i py dla każdego węzła. Następnie możesz ustawić atrybut fixed na true w każdym węźle.

To spowoduje, że obliczanie force.start() nie będzie miało żadnego efektu.


Inną rzeczą, można spróbować to ustawić wartość alfa 0, a następnie uruchomić symulację:

force.alpha(0) 
    .start() 

Nie jestem pewien, czy ta metoda działa. Opublikuj jsFiddle, jeśli tak nie jest.

+1

Och Czytałem dokumentację tam iz powrotem, ale nie jestem wystarczająco sprytny, aby zdać sobie sprawę, że powinienem użyć stałego atrybutu :-). Działa świetnie! Dzięki! – hansbrattberg

+0

To normalne, nie martw się. Cieszę się, że pomogło. Możesz zaakceptować odpowiedź, jeśli rozwiąże ona Twój problem. –

Powiązane problemy