2017-01-12 2 views
0

Я довольно новичок в программировании и совершенно новый для Р. Я изо всех сил пытаюсь понять, как выделить взвешенный узел. У меня есть кадр данных, например, так:Как выделить взвешенные узлы в r?

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

так соединяется с 3 вещи, в то время как другие в первом столбце подключаться только к одному. Как это сделать, чтобы алгоритмически распознать, что «a» имеет более высокий вес и выделяет его.

Это мой первый вопрос, когда-либо здесь, поэтому прощайте формат. Заранее спасибо!

+0

вы использовали 'igraph' пакет для построения и черчения структур данных графа? – Spacedman

+0

«алгоритмически»; «highlights» => пожалуйста, определите – hrbrmstr

ответ

1

Вот пример, используя один из многих возможных схем взвешивания (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

Вы можете использовать яркие цвета, чтобы (изменить оттенок, использовать некоторые оттенки палитры или увеличить значение альфа), здесь есть один пример:

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

Смежные вопросы