我有几种细胞类型,想要展示它们之间的联系。我的问题是,如果我只使用plot(all.cnx),它会显示所有的连接。但是,如果我想添加edge.color等,那么它可以简化图形。例如,从"CT#1_3“到其他单元类型的连接。我如何避免这种简化,因为我想要显示所有的边缘?
谢谢,伊利亚斯。
library("igraph")
my_cnxs = c("CT#1_0","CT#2_7","CT#1_2","CT#2_7","CT#1_3","CT#2_7","CT#1_5","CT#2_7","CT#1_6","CT#2_7","CT#1_0","CT#2_0","CT#1_0","CT#2_2","CT#1_0","CT#2_8","CT#1_2","CT#2_8","CT#1_3","CT#2_8","CT#1_5","CT#2_8","CT#1_6","CT#2_8","CT#1_2","CT#2_0","CT#1_2","CT#2_2","CT#1_3","CT#2_0","CT#1_3","CT#2_2","CT#1_5","CT#2_0","CT#1_5","CT#2_2","CT#1_6","CT#2_0","CT#1_6","CT#2_2","CT#1_1","CT#3_2","CT#1_1","CT#2_0","CT#1_1","CT#2_2","CT#1_2","CT#3_2","CT#1_3","CT#3_2","CT#1_5","CT#3_2","CT#1_6","CT#3_2","CT#3_2","CT#3_2","CT#3_2","CT#2_0","CT#3_2","CT#2_2","CT#2_8","CT#3_2","CT#2_8","CT#2_0","CT#2_8","CT#2_2","CT#1_1","CT#2_7","CT#1_2","CT#2_7","CT#1_3","CT#2_7","CT#1_5","CT#2_7","CT#1_6","CT#2_7","CT#3_2","CT#2_7","CT#2_8","CT#2_7")
my_edge_colors = c("green","green","green","green","green","green","green","green","green","green","green","green","black","black","black","black","black","black","black","black","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red")
all_cell_colors = c("yellow3","red","skyblue","orange","violet","cyan3","gray80","green","darkgreen","pink","gold","cadetblue1","purple","darkkhaki","chocolate","darkred","aquamarine","darkslategray4","blue","cyan1")
names(all_cell_colors) = c("CT#4_0","CT#1_0","CT#1_1","CT#1_2","CT#1_3","CT#1_4","CT#1_5","CT#1_6","CT#1_7","CT#3_1","CT#3_2","CT#2_0","CT#2_1","CT#2_2","CT#2_3","CT#2_4","CT#2_5","CT#2_6","CT#2_7","CT#2_8")
all.cnx = graph(my_cnxs)
my_layout = layout_(all.cnx, nicely())
my.cx.names = names(edges(all.cnx)[[1]][1])
my_vertex_colors = all_cell_colors[match(my.cx.names, names(all_cell_colors))]
plot(all.cnx, layout = my_layout, edge.color = my_edge_colors, edge.arrow.size=0.4, vertex.color = my_vertex_colors, vertex.size=30,vertex.frame.color="black", vertex.label.color="black",vertex.label.cex=0.5, vertex.label.dist=0, edge.curved=0.2)
plot(all.cnx ,layout = my_layout)发布于 2019-01-31 22:24:25
由于edge.curved = 0.5,边是重叠的。它使所有的边都具有相同的曲率,所以如果图被简化,它看起来就像是边在那里,只是完美地重叠。
要得到想要的结果,边中的曲线较少,可以直接在igraph对象上使用函数curve_multiple(),并将结果向量传递给edge.curve。
plot(all.cnx, layout = my_layout,
edge.color = my_edge_colors, edge.arrow.size=0.4,
vertex.color = my_vertex_colors, vertex.size=30,vertex.frame.color="black",
vertex.label.color="black",vertex.label.cex=0.5, vertex.label.dist=0,
edge.curved = curve_multiple(all.cnx, .2)) # the default is 0.5

这将只在需要曲线的地方曲线边,即会有重叠。如果仅删除edge.curved参数,它将重置为默认值,从而使边具有更多的曲率,但不会重叠。
https://stackoverflow.com/questions/54461816
复制相似问题