Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在igraph绘图中为顶点着色和高亮显示链接_R_Plot_Igraph - Fatal编程技术网

如何在igraph绘图中为顶点着色和高亮显示链接

如何在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

我不熟悉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    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)