В предыдущем сообщении под названием "D3: Как создать медленный переход кругов для узлов в Force Directed Graphs FDG?", я получил отличный ответ о том, как перемещать один элемент (например, радиус для «просто круги») в D3.
Мой дополнительный вопрос теперь о том, как одновременно переходить "несколько атрибутов D3"...
Напоминаю, что я использую радиокнопки, сгенерированные D3, для переключения размера узлов в макете FDG (по щелчку мыши) с размера по умолчанию на масштабированную величину. Вы можете найти переключатели в верхнем левом углу диаграммы кластера узлов (http://nounz.if4it.com/Nouns/Applications/A__Application_1.NodeCluster.html)
Код, который переключает круги узлов между числом по умолчанию и масштабированной величиной (теперь с использованием переходов), выглядит следующим образом...
var densityControlClick = function() {
var thisObject = d3.select(this);
var typeValue = thisObject.attr("density_type");
var oppositeTypeValue = (function() {
if(typeValue=="On") {
return "Off";
} else {
return "On";
}
})();
var densityBulletSelector = "." + "densityControlBullet-" + typeValue;
var selectedBullet = d3.selectAll(densityBulletSelector);
selectedBullet.style("fill", "Black")
var oppositeDensityBulletSelector = "." + "densityControlBullet-" + oppositeTypeValue;
var selectedOppositeBullet = d3.selectAll(oppositeDensityBulletSelector);
selectedOppositeBullet.style("fill", "White")
if(typeValue=="On") {
var selectedNodeCircles = d3.selectAll("#NODE");
selectedNodeCircles.transition().duration(500).attr("r", function(d){ return rRange(d.rSize); });
}
else {
var selectedNodeCircles = d3.selectAll("#NODE"); selectedNodeCircles.transition().duration(500).attr("r", function(d) { if (d.id==focalNodeID) { return centerNodeSize; } else { return defaultNodeSize; } } );
}
}
Все работает отлично, и вы можете увидеть более медленные переходы узлов при выборе переключателей. Однако теперь я хотел бы узнать, как одновременно перемещать несколько элементов, таких как радиус и длина ребра, а также теорию, лежащую в основе этого, чтобы продемонстрировать динамическую природу D3.
Мой вопрос: учитывая, что я уже могу успешно переходить радиус кругов, как бы я также переходил другие элементы, такие как длины ребер, на основе таких атрибутов, как «альфа», «трение» и т. д., и... какая теория лежит в основе переход нескольких элементов (другими словами, что означает код на английском языке)? API D3, по-видимому, не дает четкого понимания теории, лежащей в основе одновременного перехода нескольких атрибутов.