D3'te güçle yönlendirilmiş bir grafik üzerinde çalışıyorum. Diğer tüm düğümleri ve bağlantıları daha düşük bir opaklığa ayarlayarak mouseover'd düğümünü, bağlantılarını ve çocuk düğümlerini vurgulamak istiyorum.Seçilen düğümü, onun bağlantılarını ve çocuklarını D3 kuvvet yönelimli bir grafikte vurgulayın
Bu örnekte, http://jsfiddle.net/xReHA/, bağlantıların tüm düğümlerini ve düğümlerini devre dışı bıraktım, sonra bağlı bağlantılarda soldu, ancak şu ana kadar, çocuklar olan bağlı düğümlerde zarif bir şekilde soluyamadım. Şu anda mouseover'd düğümün.
function fade(opacity) {
return function(d, i) {
//fade all elements
svg.selectAll("circle, line").style("opacity", opacity);
var associated_links = svg.selectAll("line").filter(function(d) {
return d.source.index == i || d.target.index == i;
}).each(function(dLink, iLink) {
//unfade links and nodes connected to the current node
d3.select(this).style("opacity", 1);
//THE FOLLOWING CAUSES: Uncaught TypeError: Cannot call method 'setProperty' of undefined
d3.select(dLink.source).style("opacity", 1);
d3.select(dLink.target).style("opacity", 1);
});
};
}
ben source.target yüklenen bir elemanda saydamlığını ayarlamak denediğimde Uncaught TypeError: Cannot call method 'setProperty' of undefined
hatası alıyorum:
Bu koddan anahtar işlevidir. Bu düğümün bir d3 nesnesi olarak yüklenmesinin doğru yolu olmadığından şüpheleniyorum, ancak bağlantının hedefiyle veya kaynağında eşleşenleri bulmak için tüm düğümler üzerinde tekrar yinelemeden başka bir yol bulamıyorum. Performansı makul tutmak için, tüm düğümlerde gerekli olandan daha fazla yineleme yapmak istemiyorum.
ben http://mbostock.github.com/d3/ex/chord.html bağlantıları solan örneğini aldı:Ancak, bağlı alt düğümleri değiştirmeye göstermek gelmez.
çözmek veya bu nasıl geliştirilebileceğine ilişkin herhangi iyi önerileri
öfkeyle upvoted edilecektir :) sen ilişkili veri nesneleri (d.source ve d.target) ziyade DOM öğelerini seçerek çünkü
Bu harika @mbostock çalışıyor, çok teşekkür ederim: D [jsfiddle] (http://jsfiddle.net/xReHA/1/) çözümünüzle güncelledik. –
Bağlantının tarzına gereksiz bir çağrıyı kaldırdı: http://jsfiddle.net/xReHA/2/ –
Mike, bu çözüm çok güzeldi. Sadece söylüyorum'. – Vivek