如何在R中改变IGRAPHE中边的强度和对称性?

如何在R中改变IGRAPHE中边的强度和对称性?,r,nodes,igraph,edges,network-analysis,R,Nodes,Igraph,Edges,Network Analysis,我希望制作一个类似于此的图表: 其中,不仅顶点根据其值具有不同的大小,而且边根据值/力具有不同的宽度 我在这里设置了以下数据: data = structure(c(NA, 0, 0, 0, 0.003122927, 0.00999241, 0.008685473, 0.007730365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.003573423, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

我希望制作一个类似于此的图表: 其中,不仅顶点根据其值具有不同的大小,而且边根据值/力具有不同的宽度

我在这里设置了以下数据:

    data = structure(c(NA, 0, 0, 0, 0.003122927, 0.00999241, 0.008685473, 
0.007730365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.003573423, 0, 0, 0, 
0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.18893711, 0, 0, 0, NA, 0.183237263, 
0.139293056, 0.120902907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.132071652, 
0, 0.457142857, 0.114500717, 0.322255215, 0, 0, 0, 0.097676062, 
NA, 0.261095249, 0.131416203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.146191646, 
0, 0, 0, 0, 0.086854728, 0, 0, 0, 0.023023646, 0.080959767, NA, 
0.034786642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09469697, 
0, 0, 0, 0.024480341, 0.049917782, 0.042613636, NA, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0.255554962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.765625, 
0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 
0, 0.040201005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.041930937, 0, 0.192970073, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0.030562035, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 
0, 0, 0, 0, 0, 0.151121606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, NA, 0.039751553, 0, 0, 0, 0, 0, 0.026693325, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.011428571, NA), .Dim = c(23L, 
23L), .Dimnames = list(c("sp1", "sp2", "sp3", "sp4", "sp5", "sp6", 
"sp7", "sp8", "sp9", "sp10", "sp11", "sp12", "sp13", "sp14", 
"sp15", "sp16", "sp17", "sp18", "sp19", "sp20", "sp21", "sp22", 
"sp23"), c("sp1", "sp2", "sp3", "sp4", "sp5", "sp6", "sp7", "sp8", 
"sp9", "sp10", "sp11", "sp12", "sp13", "sp14", "sp15", "sp16", 
"sp17", "sp18", "sp19", "sp20", "sp21", "sp22", "sp23")))
这是我的剧本:

library (igraph)
    
View (data)

class (data)

data= data.matrix(data, rownames.force = NA)

class (data)

graph <- graph_from_adjacency_matrix(data, mode = "directed", weighted = TRUE)

as_edgelist(graph, names=F)

as_adjacency_matrix(graph, attr="weight")

as_data_frame(graph, what="edges")

as_data_frame(graph, what="vertices")

graph = simplify(graph, edge.attr.comb=list(weight="sum","ignore"))


deg <- degree(graph, mode="all")

L <- layout_in_circle(graph)


plot(graph, edge.arrow.size=.1, vertex.color="black",vertex.size=deg*1.5, 
 vertex.frame.color="black", vertex.label.color="grey10", vertex.label.degree=-pi/6,
vertex.shape="circle",vertex.label.cex=1, vertex.label.dist=2,
vertex.label.font=1, edge.arrow.size=8, edge.width=0, edge.curved=0, edge.color="black",
edge.lty=1, layout=L)
库(igraph)
视图(数据)
类别(数据)
data=data.matrix(数据,rownames.force=NA)
类别(数据)

图形要将边的宽度映射到其权重,请将
edge.width=0
替换为
edge.width=E(图形)$weight
。不幸的是,我不知道有哪个函数或指令会创建您想要的窄边。在调用
绘图
时,您定义了两次
边.arrow.size
。谢谢!我没有注意到。