【问题标题】:Plotting nodes with no links using igraph and R使用 igraph 和 R 绘制没有链接的节点
【发布时间】:2019-05-29 20:41:46
【问题描述】:

我正在使用 igraph 包绘制如下网络,但我希望能够显示图中的所有节点(作者),即使是那些与其他人没有联合论文的作者。这可能吗?

PubID <- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847","177427")
Author <- c("ZJ","RA","DJ","JP","GS","Tv","MC","JR","CW","PB","MD","FO","FO","RA","DJ","KS")
dt <- data.frame(Author,PubID)
library(tidyverse)
library(igraph)
dt %>%
  mutate(author_id = as.integer(Author)) -> dt
dt %>%
  inner_join(dt, by = "PubID") %>%
  filter(author_id.x < author_id.y) %>%
  count(Author.x, Author.y) %>%
  graph_from_data_frame(directed = FALSE) -> g1
plot(g1)
as_data_frame(g1, what = "edges")

我想显示网络,然后将“KS”作者显示为图中的单个节点。

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    首先我们找到所有尚未出现的人:

    (rest <- setdiff(Author, V(g1)$name))
    # [1] "KS"
    

    然后添加它们

    g1 <- add.vertices(g1, length(rest), attr = list(name = rest))
    

    【讨论】:

    • 谢谢你,这行得通!我在使用更大的网络时意识到,如果“KS”有多个 PubID,一个与另一位作者联合,一个是唯一的,则“KS”既显示在连接的网络中,也显示为单个节点。如果 KS 完全不连接,有没有办法只显示为单个节点?
    • 例如KS 不会在此数据图中显示为单个节点PubID &lt;- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847","177427","169759") Author &lt;- c("ZJ","RA","DJ","JP","GS","Tv","MC","JR","CW","PB","MD","FO","FO","RA","DJ","KS","KS")
    • @otter77,我真的看不出你所说的情况:如果“KS”已经与某人建立联系,那么“KS”将不会出现在rest中,因此不会包含在内作为一个孤立的节点。
    • 我认为这与 V(g1)$name 作为 author_id 而不是我实际代码中的作者姓名有关。所以“休息”不起作用,因为它正在将名称与 id 进行比较,因此所有内容都被拉过。
    • 虽然现在已修复,但我的一个顶点命令中出现了错误。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 2017-08-16
    • 1970-01-01
    • 2019-10-10
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多