在igraph中绘制网络图或在R中使用其他程序包绘制图,每个节点都依赖于协变量?

时间:2018-06-30 12:56:31

标签: r graph igraph

我目前有一个R语言的网络,该网络具有邻接矩阵,边列表和网络格式,我想根据每个节点的协变量进行绘制。我有三个协变量ageclassscore,其中age为0或1,class的范围为1至50,而{{1 }}的范围是0到100。我想知道R中的哪个包可能有助于绘制节点及其网络边缘,其节点颜色取决于score,节点的符号取决于class,以及一个依赖于age的节点? score中是否存在此类方法?谢谢!

1 个答案:

答案 0 :(得分:1)

以下是使用igraph的示例。由于您不提供任何数据,因此我将举例说明一些随机生成的数据。

library(igraph)

set.seed(12)
g = erdos.renyi.game(10,0.33)

V(g)$age   = sample(0:1, 10, replace=TRUE)
V(g)$class = sample(50, 10,   replace=TRUE)
V(g)$score = sample(0:100, 10, replace=TRUE)

plot(g, vertex.shape = c("circle", "square")[V(g)$age + 1],
    vertex.color = rainbow(50)[V(g)$class],
    vertex.size = round(sqrt(V(g)$score+25)),
    vertex.label.dist = 1.5)

Variations on Nodes

评论

  1. 我怀疑一个人可以区分50种颜色以从图形中读取50个类的值。

  2. 您希望节点的大小取决于分数,分数从0到100。您当然不希望任何大小为零的节点,并且您当然不希望任何节点的大小是另一个节点的100倍。节点。因此,我使用size = round(sqrt(V(g)$score+25))来避免这些问题。

  3. 因为当节点非常小时很难读取标签,所以我用vertex.label.dist = 1.5

  4. 将标签稍微移到了侧面