milesdavis
New member
Hey liebe Leute,
man kann in einem Graphen mit der Bibliothek D3.js per Mausklick auf einen Knoten klicken und dadurch seine Verbindungen zu anderen Knoten hervorheben, indem die anderen unverbundenen Knoten durchschtig werden. Zwei Knoten sind mit einer Kante verbunden, die von einem Knoten ausgeht (source) und in den anderen mündet (target).
Dazu folgender Code:
Im Grunde habe ich verstanden, dass man die Knoten durchgeht und schaut, welche Knoten miteinander verbunden sind.
Nur verstehe ich diese Zeile nicht. Man kreiert ein Array namens linkedByIndex und geht alle Knoten durch:
Aber was bedeutet
Das gleiche hier im nächsten Schritt.
Ausserdem verstehe ich diese Zeile Code ebenso wenig:
Ich hoffe, jemand hat Erbarmen und hilft mir aus.
Vielen Dank liebe Freunde.
man kann in einem Graphen mit der Bibliothek D3.js per Mausklick auf einen Knoten klicken und dadurch seine Verbindungen zu anderen Knoten hervorheben, indem die anderen unverbundenen Knoten durchschtig werden. Zwei Knoten sind mit einer Kante verbunden, die von einem Knoten ausgeht (source) und in den anderen mündet (target).
Dazu folgender Code:
HTML:
//Toggle stores whether the highlighting is on
var toggle = 0;
//Create an array logging what is connected to what
var linkedByIndex = {};
for (i = 0; i < graph.nodes.length; i++) {
linkedByIndex[i + "," + i] = 1;
};
graph.links.forEach(function (d) {
linkedByIndex[d.source.index + "," + d.target.index] = 1;
});
//This function looks up whether a pair are neighbours
function neighboring(a, b) {
return linkedByIndex[a.index + "," + b.index];
}
function connectedNodes() {
if (toggle == 0) {
//Reduce the opacity of all but the neighbouring nodes
d = d3.select(this).node().__data__;
node.style("opacity", function (o) {
return neighboring(d, o) | neighboring(o, d) ? 1 : 0.1;
});
link.style("opacity", function (o) {
return d.index==o.source.index | d.index==o.target.index ? 1 : 0.1;
});
//Reduce the op
toggle = 1;
} else {
//Put them back to opacity=1
node.style("opacity", 1);
link.style("opacity", 1);
toggle = 0;
}
}
Im Grunde habe ich verstanden, dass man die Knoten durchgeht und schaut, welche Knoten miteinander verbunden sind.
Nur verstehe ich diese Zeile nicht. Man kreiert ein Array namens linkedByIndex und geht alle Knoten durch:
HTML:
//Create an array logging what is connected to what
var linkedByIndex = {};
for (i = 0; i < graph.nodes.length; i++) {
linkedByIndex[i + "," + i] = 1;
};
Aber was bedeutet
linkedByIndex[i + "," + i] = 1
? Was soll die eins bedeuten?Das gleiche hier im nächsten Schritt.
HTML:
graph.links.forEach(function (d) {
linkedByIndex[d.source.index + "," + d.target.index] = 1;
});
Ausserdem verstehe ich diese Zeile Code ebenso wenig:
HTML:
//This function looks up whether a pair are neighbours
function neighboring(a, b) {
return linkedByIndex[a.index + "," + b.index];
}
Ich hoffe, jemand hat Erbarmen und hilft mir aus.
Vielen Dank liebe Freunde.
Zuletzt bearbeitet von einem Moderator: