首页 > 解决方案 > 将属性(性别)添加到边缘列表中的顶点

问题描述

我有一个生殖对的边缘列表,如下所示:

male_ID=c(1,2,3,4,5), female_ID=c(6,7,8,9,10), a=cbind(male_ID, female_ID)

使用 Igraph 我从数据中生成了一个图表,在完整的 df 上绘制和运行一些分析:

g <- graph_from_data_frame(a)

我的问题是,我现在可以根据边缘列表中列出的列为个人的性别添加一个属性(为顶点着色)吗?

标签: rigraph

解决方案


您可以将组标签分配给您的图形对象。

为了创建组向量“性别”,您的数据框表明您的男性与女性一样多。graph_from_data_frame()将 mal_ID 和 female_ID 列堆叠在彼此下方,您可以使用igraph::V(g). 因此,您可以从该信息中得出组向量:


male_ID=c(1,2,3,4,5); female_ID=c(6,7,8,9,10); a=cbind(male_ID, female_ID)

#create graph object from dataframe
g <- igraph::graph_from_data_frame(a)

#investigate structure g
igraph::V(g)
#[1] 1  2  3  4  5  6  7  8  9  10

# create sex group vector
sex <- c(replicate(length(male_ID), "Male"), replicate(length(female_ID), "Female"))

#Check group values
print(igraph::V(g)$group)
# NULL

#assign groups
igraph::V(g)$group <- sex

#Check group values again
print(igraph::V(g)$group)
#[1] "Male"   "Male"   "Male"   "Male"   "Male"   "Female" "Female" "Female" "Female" "Female"

# I use visnetwork to visualise 
vis_g <- visNetwork::toVisNetworkData(g, idToLabel = TRUE) 

visNetwork::visNetwork(
  nodes = vis_g$nodes,
  edges = vis_g$edges
  )

推荐阅读