在igraph或R中的其他包中绘制一个网络,其中每个节点都依赖于协变量?

在igraph或R中的其他包中绘制一个网络,其中每个节点都依赖于协变量?,r,graph,igraph,R,Graph,Igraph,目前,我有一个R中的网络,可以使用邻接矩阵、edgelist和网络格式,我想根据每个节点的协变量绘制该网络。我有三个协变量,age,class和score,其中age为0或1,class范围为1到50,score范围为0到100。我想知道R中的哪些包可能有助于绘制节点及其网络边缘,节点颜色取决于类别,节点符号取决于年龄,节点大小取决于分数?igraph中是否存在此类方法?谢谢 下面是一个使用igraph的示例。由于您没有提供任何数据,因此我使用一些随机生成的数据进行说明 library(igra

目前,我有一个R中的网络,可以使用邻接矩阵、edgelist和网络格式,我想根据每个节点的协变量绘制该网络。我有三个协变量,
age
class
score
,其中
age
为0或1,
class
范围为1到50,
score
范围为0到100。我想知道R中的哪些包可能有助于绘制节点及其网络边缘,节点颜色取决于
类别
,节点符号取决于
年龄
,节点大小取决于
分数
igraph
中是否存在此类方法?谢谢

下面是一个使用
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)

评论
  • 我怀疑一个人能否分辨出50种颜色来从图表中读取50个类值

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

  • 因为节点非常小时很难读取标签,所以我将标签稍微移到了
    vertex.label.dist=1.5


  • 哇,太棒了!我不知道伊格拉夫会做这样的事。谢谢