2016-11-14 18 views
1

Я работаю над компоновкой сил в D3v4, которая должна обновлять свои узлы с течением времени. Я следил за Adding new nodes to Force-directed layout (D3v2) и block (d3v3) mbostock, но я не совсем уверен, как добиться такого же эффекта в D3v4. Вот что у меня до сих пор:Обновление силовых макетов в D3v4

http://bl.ocks.org/danielcompton/2189f9571e306f3084e5c2a913002eaf

Проблема, которую я вижу в том, что, когда я добавляю те же данные в макет силы во второй раз, он сбрасывает позицию узлов, а также похоже, сбрасывает их с меньшей альфа, поэтому они не полностью расширяются до тех пор, пока не будут нажаты. Нужно ли устанавливать альфу, когда я обновляю узлы и ссылки?

Я видел D3 v4: Update force layout, и это другой (но связанный) вопрос.

Есть ли у кого-нибудь советы о том, как достичь этого в D3 v4?

ответ

0

Кажется, что симуляция начинается с низкого значения альфа, как вы ее обрабатываете. Если я просто сбросить значение альфа с .alpha(1) внутри handleGraph он делает трюк на моей стороне:

simulation 
    .nodes(graph.nodes) 
    .on("tick", ticked) 
    .alpha(1); 
0

после добавления данных, вы можете использовать simulation.alpha(1).restart() перезапустить макет моделирования.