2017-01-12 4 views
0

Ich bin ziemlich neu im Programmieren, und brandneu für R. Ich habe Mühe herauszufinden, wie man einen gewichteten Knoten hervorhebt. Ich habe einen Datenrahmen zum Beispiel wie folgt:Gewichtete Knoten in r markieren?

a b 
a c 
a d 
e f 
g h 
i j 

so eine Verbindung zu 3 Dingen, während die andere in der ersten Spalte nur auf eine Verbindung. Wie zeichne ich das so auf, dass es algorithmisch erkennt, dass "a" das höhere Gewicht hat und es hervorhebt.

Dies ist meine erste Frage überhaupt hier, also vergeben Sie das Format. Danke im Voraus!

+0

Haben Sie verwendet, um das 'igraph' Paket für den Bau und Plotten Graphendatenstrukturen? – Spacedman

+0

"algorithmisch"; "highlights" => bitte definieren – hrbrmstr

Antwort

1

Hier ist ein Beispiel unter Verwendung eines von vielen möglichen Gewichtungsschemata (die degree):

df <- read.table(text="a b 
a c 
a d 
e f 
g h 
i j") 
library(igraph) 
g <- graph_from_data_frame(df) 
coords <- layout.auto(g) 
# "weight" nodes by number of edges and rescale values from 10 to 20: 
V(g)$size <- plotrix::rescale(degree(g), c(10, 20)) 
plot(g, layout=coords, vertex.size=V(g)$size) 
0

können Sie hellere Farben verwenden, um (Farbton ändern, verwenden einige Paletten Schattierungen oder Alpha-Wert erhöhen), hier ist ein Beispiel:

df <- read.table(text="a b 
       a c 
       a d 
       e f 
       g h 
       i j", header=FALSE) 
library(igraph) 
g <- graph_from_data_frame(df) 
deg <- 1 + degree(g, mode='out') 
plot(g, vertex.size=10*deg, 
    vertex.color=colorRampPalette(c('grey','green'))(max(deg))[deg]) 

enter image description here