Как сделать звездный сюжет с помощью igraph? - PullRequest
2 голосов
/ 13 июня 2019

Я работаю с igraph впервые и хотел бы сделать «звездный сюжет» (make_star()) с пакетом igraph.

Для этого я подготовил примерный набор данных, в котором есть два столбца: name и wght.

Я хочу, чтобы "Я" было в центре графика, и все стрелки должны выходить из него. Было бы здорово, если бы ширина стрелки соответствовала значениям от wght (возможно, с edge.width) ИЛИ весам на стрелках.

Мой код выглядит так:

library(igraph)
wght <- runif(6, min = 1, max = 10)
name <- c("John", "Jim", "Jack", "Jesse", "Justin", "Peter")
data <- data.frame(name, wght)


st <- make_star(n = 6, mode = "out")
plot(st, vertex.label = data$name)

Выход:

enter image description here

что я хочу:

enter image description here

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

Создайте график, в котором «Я» включено в качестве вершины. Добавить атрибут ребра "weight". Создайте star layout с "Я" как center. Установите ширину ребер в соответствии с весом. Участок!

g <- graph_from_data_frame(data.frame(from = "Me", to = name))
E(g)$weights <- wght

plot(g, layout = layout_as_star(g, center = V(g)["Me"]), edge.width = E(g)$weights)

enter image description here


Данные

set.seed(1)
wght <- runif(6, min = 1, max = 10)
name <- c("John", "Jim", "Jack", "Jesse", "Justin", "Peter")
1 голос
/ 13 июня 2019

Интересно узнать о новой упаковке. Это должно сделать это для вас:

st <- make_star(n=6,mode = "out") %>%
      set_vertex_attr("label", index = 1, value = "ME") %>%
      set_vertex_attr("label", index = 2:6, value = name[2:6])

plot(st)

enter image description here

...