【问题标题】:Adjusting the node size in igraph using a matrix使用矩阵调整 igraph 中的节点大小
【发布时间】:2012-08-21 15:46:33
【问题描述】:

我有如下网络图:

set.seed(1410)
df<-data.frame(
"site.x"=c(rep("a",4),rep("b",4),rep("c",4),rep("d",4)),
"site.y"=c(rep(c("e","f","g","h"),4)),
"bond.strength"=sample(1:100,16, replace=TRUE))

library(igraph)
df<-graph.data.frame(df)
V(df)$names <- c("a","b","c","d","e","f","g","h")
layOUT<-data.frame(x=c(rep(1,4),rep(2,4)),y=c(4:1,4:1))
E(df)[ bond.strength < 101 ]$color <- "red"
E(df)[ bond.strength < 67 ]$color <- "yellow"
E(df)[ bond.strength < 34 ]$color <- "green"
V(df)$color <- "white"
l<-as.matrix(layOUT)
plot(df,layout=l,vertex.size=10,vertex.label=V(df)$names,
edge.arrow.size=0.01,vertex.label.color = "black")

并且想使用这样的矩阵来调整节点的大小:

m<-matrix(data=c(25,0,15,0,35,0,5,0,0,10,0,5,0,19,0,44), nrow=2, ncol=8)
colnames(m)<-c("a","b","c","d","e","f","g","h")
row.names(m)<-c("site.x","site.y")

        a  b  c d  e f  g  h
site.x 25 15 35 5  0 0  0  0
site.y  0  0  0 0 10 5 19 44

有什么建议吗?

【问题讨论】:

    标签: r nodes igraph


    【解决方案1】:

    你可以使用

    node.size<-setNames(c(25, 15, 35, 5, 10, 5, 19, 44),c("a", "b","c", "d", "e", "f", "g", "h"))
    plot(df,layout=l,vertex.label=V(df)$names,
    edge.arrow.size=0.01,vertex.label.color = "black",vertex.size=node.size)
    

    所以基本上是一个命名向量。

    plot(df,layout=l,vertex.label=V(df)$names,
    edge.arrow.size=0.01,vertex.label.color = "black",vertex.size=as.matrix(node.size) )
    

    也可以

    更新:

    如果您需要使用您的m 矩阵

    plot(df,layout=l,vertex.label=V(df)$names,
    edge.arrow.size=0.01,vertex.label.color = "black",vertex.size=m[m!=0]) 
    

    【讨论】:

    • 那么在使用矩阵或data.frame创建命名向量时,是否需要使用setNames函数?您能否举例说明我将如何使用示例中的矩阵 m 来创建命名向量以及如何将其插入到“vertex.size=”中。非常感谢。
    • 有人可以看看我的问题吗? stackoverflow.com/questions/65209890/… 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2013-10-11
    • 1970-01-01
    • 2023-01-14
    • 2017-10-08
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多