如何在igraph绘图中为顶点着色和高亮显示链接
我不熟悉igraph,我正在尝试绘制小世界网络,其中我根据属性为顶点着色,并高亮显示特定链接 假设我有一个具有8个顶点的网络(如何在igraph绘图中为顶点着色和高亮显示链接,r,plot,igraph,R,Plot,Igraph,我不熟悉igraph,我正在尝试绘制小世界网络,其中我根据属性为顶点着色,并高亮显示特定链接 假设我有一个具有8个顶点的网络(myNet)的邻接矩阵(adj_矩阵): > adj_matrix [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 0 1 0 0 0 0 0 1 [2,] 1 0 1 0 0 0 0 0 [3,] 0 1
myNet
)的邻接矩阵(adj_矩阵
):
> adj_matrix
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0 1 0 0 0 0 0 1
[2,] 1 0 1 0 0 0 0 0
[3,] 0 1 0 1 0 0 0 0
[4,] 0 0 1 0 0 0 0 1
[5,] 0 0 0 0 0 1 0 0
[6,] 0 0 0 0 1 0 1 0
[7,] 0 0 0 0 0 1 0 1
[8,] 1 0 0 1 0 0 1 0
在一个单独的数据帧(df
)中,我有8个相应的值:
> df
name values
1 1 0.3568838
2 2 0.5260344
3 3 0.3568838
4 4 0.7374865
5 5 0.7140553
6 6 0.5260344
7 7 0.4125705
8 8 0.7374865
作为一种临时解决方案,我可以将其绘制为一个无向网络,其顶点由节点$values
手动着色,如下所示:
as_edgelist(myNet, names = TRUE)
links <- data.frame(
source=as_edgelist(myNet, names = TRUE)[,1],
target=as_edgelist(myNet, names = TRUE)[,2])
palf <- colorRampPalette(c("gray80", "red"))
network <- graph_from_data_frame(d = links, vertices = df, directed = F)
plot(network, vertex.color = palf(8), layout=layout_in_circle)
as_edgelist(myNet,names=TRUE)
链接当您plot()
时,您可以通过指定vertex.color
和edge.color
的值为igraph中的顶点和边着色
到目前为止,在您的示例中还不错,但是您应该真正尝试使用igraph对象,而不是临时解决方案。考虑用<代码>图形> FraceFixEdgEistSist](<代码> >或<代码> GraseFixEngulixyMatX()/<代码> < /P>
igraph对象自然地绘制垂直属性,如color
,以及边缘属性,如color
和width
。您可以这样设置它们:
V(network)$color <- "white"
V(network)$color <- "black"
这是您可以开始着色和高亮显示的方式
# Make network and assign values from dataframe
network <- graph_from_adjacency_matrix(adj_matrix, mode="undirected")
V(network)$value <- df$values
V(network)$col_values <- round( V(network)$value, 2) * 100
# Colour vertecies
colours <- colorRampPalette(c("gray80", "red"))(100)
V(network)$color <- colours[ V(network)$col_values ]
# Color edges
E(network)$color <- "black"
#Highlight edge
E(network)$width <- 1
E(network)$width[5] <- 5
# Plot
plot(network, layout=layout_in_circle)
#建立网络并从数据帧分配值
网络粗体边是使用边属性宽度设置的。顶点和边都采用颜色
(仅限美式拼写)。
# Make network and assign values from dataframe
network <- graph_from_adjacency_matrix(adj_matrix, mode="undirected")
V(network)$value <- df$values
V(network)$col_values <- round( V(network)$value, 2) * 100
# Colour vertecies
colours <- colorRampPalette(c("gray80", "red"))(100)
V(network)$color <- colours[ V(network)$col_values ]
# Color edges
E(network)$color <- "black"
#Highlight edge
E(network)$width <- 1
E(network)$width[5] <- 5
# Plot
plot(network, layout=layout_in_circle)