У меня есть сеть корреляции всех пользователей и того, как они связаны друг с другом на основе их ролей, и я сделал следующий сюжет:
plot(
net,
vertex.frame.color=ifelse(V(net)$Team==TeamName, "black",NA),
vertex.size=ifelse(V(net)$Team==TeamName, 5, 0),
vertex.label=ifelse(V(net)$Team==TeamName, NA, NA),
edge.arrow.mode=0,
edge.lty=0,
vertex.color=ifelse(V(net)$Team==TeamName, "skyblue", NA))
В результате: все пользователи, крометолько пользователи определенной команды окрашены Что я хочу сделать, это добавить имена каждого изменения пользователя vertex.label, но это загромождает сюжет.поскольку пользователи так близко друг к другу.
plot(
net,
vertex.frame.color=ifelse(V(net)$Team==TeamName, "black",NA),
vertex.size=ifelse(V(net)$Team==TeamName, 5, 0),
vertex.label=ifelse(V(net)$Team==TeamName, V(net)$internalname, NA),
edge.arrow.mode=0,
edge.lty=0,
vertex.color=ifelse(V(net)$Team==TeamName, "skyblue", NA))
Другое дело, что мы чувствуем себя уменьшенными, было бы намного лучше, если бы сюжет был сосредоточен на видимых пользователях (ifelse(V(net)$Team==TeamName
), я думалнасчет подграфов, но я не могу понять, как это сделать точно.И я не знаю, является ли это решением.
Я также пробовал это, этот график показывает мне, что все мои пользователи одинаково коррелированы, а предыдущий - нет.
tem <-delete.vertices(net,V(net)$Team!=TeamName)
plot(tem, vertex.label= round(closeness(tem, mode="all", weights=NA),2))
Некоторая дополнительная информация, так как я не могу поделиться личными данными
фрейм данных, который используется в качестве ребер (х - количество общих соединений)
$ acentralacc: chr
$ bcentralacc: chr
$ x : int
фрейм данных, который используется в качестве вершины
$ CentralAccount: chr
$ internalname : chr
$ Team : Factor
Это должно сгенерировать пример данных
install.packages("plyr")
library(plyr)
#data1 (edges)
n<-100
acentralacc<- paste("user",sample(1:n, 1000,replace=TRUE)) #usera
bcentralacc<- paste("user",sample(1:n, 1000,replace=TRUE)) #userb
x<- sample(1:100, 1000,replace=TRUE) #x
data1 <- data.frame(acentralacc,bcentralacc,x)
head(data1)
#users (vertices)
centralacc <- unique(append(acentralacc, bcentralacc))
Team<- paste("Team",sample(1:round(n/3,0), length(centralacc),replace=TRUE))
users<-data.frame(centralacc,Team)
head(users)
другой код
users$Team <- iconv(users$Team, "ASCII", "UTF-8", sub="")
users$Team <- factor(users$Team)
#creating the igraph
net <- graph_from_data_frame(d=data1, vertices=users, directed=T)
#the following should be igraph
class(net)
#removing fields with no links (0 degree)(users with no connections)
length(net[1])
net <- delete.vertices(simplify(net), degree(net)==0)
length(net[1])
#removing graphical loops etc users that have connections to them self
net <- simplify(net, remove.multiple = F, remove.loops = T)