我想将网络节点的大小设置为度中心,将x轴的分布设置为特征向量中心,而我将属性分配到y轴。我有以下代码:
u <- layout_with_dh(G_Network)
Aff <- "dashed"
Inf <- "solid"
Trig <- "dotted"
edge.lty = E(G_Network)$lty <- E(G_Network)$Type
start <- ends(G_Network, es = E(G_Network), names = F) [, 1]
edge.col <- V(G_Network)$color[start]
el <- c("Magenta", "olive drab", "spring green", "coral", "golden rod", "corn flower blue", "cyan", "Brown")
V(G_Network)$color <- el[V(G_Network)$Property]
EG <- eigen_centrality(G_Network, directed = T, scale = T, weights = NULL)
plot(EG, log = "xy", x = 0:max(EG), y = V(G_Network)$Pro, pch = 19, cex = 1, edge.width = 2, edge.arrow.size = .9, vertex.label.cex = 1, vertex.label.color = "black", vertex.label.font = 2, edge.curved = .5, edge.lty = E(G_Network), vertex.size = 3*igraph::degree(G_Network, mode = "out"), edge.color = edge.col, rescale = F, layout = u*1.3)
plot()enter
除最后一个代码块外,所有内容均运行。我该怎么办?
答案 0 :(得分:0)
对于那些想要使用它的人来说,在文章的结尾处是一个易于执行的数据版本。
我将假设您要布局节点的大小和位置。
顶点大小=中心度
x轴位置=特征值中心点
y轴位置= Pro(根据您的顶点属性)
顶点大小相对简单。绘图时只需指定vertex.size参数即可。但是,顶点的度数范围为1到4,大多数为1。该值太小而不能直接用作顶点大小,因此您将需要首先缩放值。我选了一些看起来不错的东西。
VS = 6 + 5*degree(g)
plot(g, vertex.size=VS)
要放置节点,您需要指定布局。这只是一个n x 2矩阵,其x-y位置是您要绘制顶点的位置。同样,进行一些扩展可能会有所帮助。
x = round(10*eigen_centrality(g)$vector, 2)
y = vertex_attr(g, "Pro")
LO = cbind(x,y)
plot(g, vertex.size=VS, layout=LO)
但是,我怀疑您会想要一些您未指定的东西,但获取起来稍微困难一些-带标签的轴,以便您可以从图形上读取x-y坐标。这需要更多的工作,因为默认的igraph绘图会重新缩放图形的位置,以使两个轴都在+1和-1之间运行。要保持原始比例,请使用rescale=FALSE
。您必须指定x-y限制并自己添加轴。这还需要调整顶点大小。
plot(g, vertex.size=7*VS, layout=LO, rescale=F,
xlim=range(x), ylim=range(y))
axis(side=1, pos=min(y)-1)
axis(side=2)
EL = read.table(text="Vertex.1 Vertex.2 Type
P702 P617 Trig
P617 P616 Aff
P619 P701 Inf
P212 P701 Inf
P701 P608 Aff
P701 P625 Aff
P619 P807 Trig
P623 P101 Inf
P613 P801 Inf
P619 P606 Inf
P606 P603 Aff
P602 P606 Aff
P615 P252 Inf
P603 P615 Inf
P251 P238 Aff
P604 P615 Inf
P604 P624 Inf",
header=T)
VERT = read.table(text="Vertex Property Pro
P702 7 5.0
P617 6 -4.0
P616 6 7.0
P619 7 -6.0
P701 7 6.0
P212 2 2.0
P608 6 3.0
P625 6 -5.0
P807 8 -4.0
P623 6 2.5
P101 1 1.6
P613 6 6.0
P801 8 3.0
P606 6 1.0
P603 6 -2.0
P602 6 -5.0
P615 6 4.5
P252 2 2.0
P251 2 -3.0
P238 2 2.0
P604 6 2.0
P624 6 1.0",
header=T)
g = graph_from_data_frame(EL, directed=FALSE, vertices=VERT)