Frage

Bitte werfen Sie einen Blick auf diese einfache jsfiddle: http://jsfiddle.net/perikut/9qUVW/2/ (Entschuldigung, wenn Sie Firefox verwenden, ich weiß nicht, warum es nicht gut aussieht ...)

enter image description here

Können wir in unserem Objekt ein anderes Wort als „Kinder“ verwenden, um anzugeben, woher Daten extrahiert werden?(Alle Beispiele, die ich sehe, folgen dieser Datenstruktur, siehe unten).Wo sollen wir das angeben?

Ich halte meinen Code für ziemlich mangelhaft (siehe jsfiddle), da ich gezwungen bin, den Parameter „group“ zweimal zu deklarieren, um untergeordnete Elemente einer Gruppe/eines übergeordneten Elements anzuzeigen/auszublenden.

Gibt es keine Möglichkeit, die untergeordneten Knoten von Gruppe1 direkt auszuwählen und Animationen darauf anzuwenden?Ich möchte in Zukunft eine viel komplexere Datenstruktur haben, daher muss ich diese Grundlagen vorher kennen.

Aktuelle Datenstruktur:

data = {
name:'root',
group:'no_group',
children:[
    {
        group: 'group1',
        children:[
            { group:'group1',name:'a1',value:10,color:'red' },
            { group:'group1',name:'a2',value:40,color:'lightcoral' }
        ]
    }
    , { .... } 
War es hilfreich?

Lösung

In D3 hierarchische Layouts, alle Knoten werden mit einer Menge von gefüllt Standardattribute, einschließlich eines „Parent“-Attributs.So können Sie die Angabe eines „Gruppen“-Attributs vermeiden und stattdessen „Eltern“ verwenden, wenn Sie die untergeordneten Elemente eines bestimmten Knotens auswählen:

d3.selectAll("circle").filter(function(d) { return d.parent.name === "foo"; });

Alternativ können Sie einen Vergleich anhand der Objektreferenz durchführen, wenn Sie über eine Referenz auf das Knotenobjekt selbst verfügen.

var parent = nodes.filter(function(d) { return d.name === "foo"; });
d3.selectAll("circle").filter(function(d) { return d.parent === parent; });

Hier gehe ich davon aus, dass jeder Knoten ein „Name“-Attribut hat.

Sie haben auch erwähnt, dass Sie untergeordnete Elemente aus einem anderen Attribut abrufen möchten.Ja, dies kann mit dem erreicht werden „Kinder“-Accessor.Beachten Sie, dass dadurch die untergeordneten Elemente eines Knotens in einem Attribut namens „children“ auf diesem Knoten gespeichert werden und alles überschrieben wird, was möglicherweise bereits vorhanden ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top