【问题标题】:Plotting isolated nodes in igraph with graph_from_data_frame. Missing使用 graph_from_data_frame 在 igraph 中绘制孤立节点。失踪
【发布时间】:2017-11-28 12:46:40
【问题描述】:

我正在使用带有“from”和“to”列的 data.frames,我想从中创建网络图。

例如:

mydata <- data.table(from=c("John", "John", "Jim", "Jesse"),
   to=c("John", "Jim", "Jack", NA))
mygraph <- graph_from_data_frame(d=mydata, directed=T)
plot(mygraph, vertex.label.dist=2) 

该 NA 的存在会产生错误。

如果我只是删除 NA 行,则不会绘制孤独的节点。

mydata <- data.table(from=c("John", "John", "Jim"),to=c("John", "Jim", "Jack"))
mygraph <- graph_from_data_frame(d=mydata, directed=T)
plot(mygraph, vertex.label.dist=2) 

我希望得到与使用相同的结果:

g4 <- graph( c("John", "Jim", "Jim",  "Jack", "John", "John"), isolates=c("Jesse") )  
plot(g4,  vertex.label.dist=2) 

但使用两列,从和到。 我怎样才能得到相同的结果? 当“from”或“to”中的任何一个为 NA 时,只需绘制没有边且不会产生错误的节点。

【问题讨论】:

标签: r igraph


【解决方案1】:

获得所需内容的一种方法是省略单个节点,然后使用 add_vertices 添加它

library(igraph)
mydata <- data.frame(from=c("John", "John", "Jim"),
   to=c("John", "Jim", "Jack"))
mygraph <- graph_from_data_frame(d=mydata, directed=T)
mygraph = add_vertices(mygraph, 1, name="Jesse")
plot(mygraph, vertex.label.dist=2) 

【讨论】:

  • 好的,我会尝试为更大的数据集自动化它,看看是否出现任何问题
  • 我认为当同一个节点出现两次时,我们会遇到问题,作为单个节点和作为连接节点。
  • 我认为你是说你会得到一个“从”和“到”节点的列表。有些是 NA。你可以扫描列表中的 NA 以分别添加这些节点,但有些这些节点也可能在有连接的列表中。没关系,删除与 NA 匹配的节点,然后使用setdiff 删除仍在两个列表中的任何节点。
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2022-08-17
  • 2022-11-29
  • 2020-11-02
  • 1970-01-01
相关资源
最近更新 更多