如何用igraph制作星星图?

时间:2019-06-13 13:32:54

标签: r networking plot igraph

我是第一次使用igraph,并且希望使用软件包make_star()进行“星图”(igraph)。

为此,我准备了一个示例数据集,它具有两列:name和wght。

我希望“ ME”位于情节的中心,所有箭头都应该伸出。如果箭头的宽度对应于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 个答案:

答案 0 :(得分:2)

创建一个图形,其中将“ Me”作为顶点。添加边缘属性"weight"。用“ Me”作为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 :(得分:1)

很高兴了解新包装。这应该为您做到:

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