R语言 将列表转换为图表

afdcj2ne  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(206)

我在R中有一个网络图:

library(igraph)

# create the data frame
my_data <- data.frame(to = c(1,2,3,4,2,4,1,1,1,7,7), from = c(2,2,2,2,6,5,7,8,9, 10,11))

# create the igraph object
my_graph <- graph_from_data_frame(my_data, directed = FALSE)

# plot the graph
plot(my_graph)

在上一个问题(All Nodes of Degree "N" that can be reached from Some Node)中,我学习了如何找出从半径为n的特定节点可以到达的节点数:

# neighbors of degree = 3 from node = 1
q = ego(my_graph, 3, "1")

[[1]]
+ 11/11 vertices, named, from 8e85769:
 [1] 1  2  7  8  9  3  4  6  10 11 5

**我的问题:**我正在尝试打印此“q”对象-但是,当我尝试打印时,出现以下错误:

Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' is a list, but does not have components 'x' and 'y'

我试图解决这个问题,但意识到这很可能是因为ego()函数只返回节点而不保留边信息。
我尝试了以下代码的变通方法:

plot(induced.subgraph(graph=my_graph,vids=as.numeric(q[[1]])))

代码似乎在工作,但我这样做正确吗?

ccgok5k5

ccgok5k51#

使用make_ego_graph保留边和属性:
make_ego_graph是用给定的序参数从给定顶点的所有邻域创建(子)图。2这个函数保留了顶点、边和图的属性。
make_ego_graph(和ego)返回一个图的列表,因此需要将第一个对象传递给plot

q <- make_ego_graph(my_graph, 3, '1')
plot(q[[1]])

相关问题