Я строю сеть, как показано ниже, используя пакет 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")
Я хотел бы показать сеть, а затем показать автора «КС» как отдельный узел в сюжете.
Сначала находим всех тех, кого еще нет:
(rest <- setdiff(Author, V(g1)$name))
# [1] "KS"
А затем добавьте их с помощью
g1 <- add.vertices(g1, length(rest), attr = list(name = rest))
например KS не будет отображаться как отдельный узел на этом графике данных PubID <- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847","177427","169759") Author <- 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, а не как имя автора в моем реальном коде. Таким образом, «остальное» не работает, поскольку оно сравнивает имя с идентификатором и, следовательно, все выполняется.
Однако сейчас исправлено, у меня только что была ошибка в одной из моих вершинных команд. Спасибо за помощь!
Спасибо, это работает! Что я понимаю при использовании более крупной сети, так это то, что если «KS» имеет более одного PubID, один из которых связан с другим автором, а другой уникален, «KS» отображается как в подключенной сети, так и в виде отдельного узла. Есть ли способ, чтобы KS отображался как один узел, если он полностью не подключен?