如何在 R 上绘制具有不同边缘类型的网络?
how to plot network with different edge types on R?
我想绘制一个定向加权网络,我可以在其中显示参与者之间的股票交易。我不确定我们是否可以在 igraph R 包的边缘列表中添加第三列("TYPE")。如果是这样,我们可以根据购买的库存区分边缘吗?
例如苹果:蓝边,google:红边,辉瑞:橙边。
边锋
FROM TO VALUE TYPE
A B 100 Apple
B C 50 Pfizer
C D 80 Apple
A E 70 Google
require(igraph)
test<-as.matrix(edge_list_test)
test[,1]<-as.character(test[,1])
test[,2]<-as.character(test[,2])
test[,4]<-as.character(test[,4])
g<-graph.edgelist(test[,1:2], directed=TRUE)
V(g)$size=degree(g)
E(g)$type=as.character(test[,4])
E(g)$weight=as.numeric(test[,3])
plot(g, layout=layout.fruchterman.reingold, edge.width=E(g)$weight, vertex.color=V(g)$type, vertex.label.dist=0.5)][1]][1]
为什么根据"TYPE",边缘是灰色的,看不到边缘的不同颜色?
当我 运行 你提供的代码时,我得到了大得离谱的箭头,所以我会调整 edge.width
。您的绘图语句中没有任何内容设置边缘颜色。您需要使用 edge.color
参数明确地执行此操作。
CR = rainbow(length(unique(edge_list_test$TYPE)))
plot(g, layout=layout.fruchterman.reingold,
edge.width=E(g)$weight/15, vertex.color=V(g)$type,
vertex.label.dist=0.5, edge.color=CR[edge_list_test$TYPE])
legend("topleft", legend=levels(edge_list_test$TYPE), lwd=2, col=CR)
我使用 edge_list_test$TYPE
到 select 边缘颜色而不是 E(g)$type
因为 edge_list_test$TYPE
是一个因素而 E(g)$type
只是一个字符串。
我想绘制一个定向加权网络,我可以在其中显示参与者之间的股票交易。我不确定我们是否可以在 igraph R 包的边缘列表中添加第三列("TYPE")。如果是这样,我们可以根据购买的库存区分边缘吗? 例如苹果:蓝边,google:红边,辉瑞:橙边。
边锋
FROM TO VALUE TYPE
A B 100 Apple
B C 50 Pfizer
C D 80 Apple
A E 70 Google
require(igraph)
test<-as.matrix(edge_list_test)
test[,1]<-as.character(test[,1])
test[,2]<-as.character(test[,2])
test[,4]<-as.character(test[,4])
g<-graph.edgelist(test[,1:2], directed=TRUE)
V(g)$size=degree(g)
E(g)$type=as.character(test[,4])
E(g)$weight=as.numeric(test[,3])
plot(g, layout=layout.fruchterman.reingold, edge.width=E(g)$weight, vertex.color=V(g)$type, vertex.label.dist=0.5)][1]][1]
为什么根据"TYPE",边缘是灰色的,看不到边缘的不同颜色?
当我 运行 你提供的代码时,我得到了大得离谱的箭头,所以我会调整 edge.width
。您的绘图语句中没有任何内容设置边缘颜色。您需要使用 edge.color
参数明确地执行此操作。
CR = rainbow(length(unique(edge_list_test$TYPE)))
plot(g, layout=layout.fruchterman.reingold,
edge.width=E(g)$weight/15, vertex.color=V(g)$type,
vertex.label.dist=0.5, edge.color=CR[edge_list_test$TYPE])
legend("topleft", legend=levels(edge_list_test$TYPE), lwd=2, col=CR)
我使用 edge_list_test$TYPE
到 select 边缘颜色而不是 E(g)$type
因为 edge_list_test$TYPE
是一个因素而 E(g)$type
只是一个字符串。