Как нарисовать график социальной сети с R более четко? - PullRequest
0 голосов
/ 28 мая 2018

Я сейчас использую lesmis.gml для выполнения домашней работы по сетевому анализу.Я не могу отрегулировать расстояние до узла графа: здесь более 70 узлов, а узлы расположены слишком близко.Граф является переменной g и g2. график выглядит странно, как это. (Image) вот мой код, использующий R. Я пытался использовать Gephi, но мой ноутбук не работает должным образом.Отключается.

install.packages('igraph')
install.packages('statnet')
library('igraph')
library('statnet')
g<-read.graph("lesmis.gml", format=c("gml"))
g
graph.density(g)
igraph::degree(g,mode="out")
plot(g)
vcount(g)
centralization.degree(g)
V(g)$size<-igraph::degree(g)*5
plot(g)
clo<-igraph::closeness(g)
clo
clo.score<-round((clo-min(clo))*length(clo)/max(clo))+1
clo.colors<-rev(heat.colors(max(clo.score)))
V(g)$color<-clo.colors[clo.score]
plot(g)
btw<-igraph::betweenness(g)
btw
btw.score<-round(btw)+1
btw.score
btw.colors<-rev(heat.colors(max(btw.score)))
V(g)$color<-btw.colors[btw.score]
plot(g)
clusters(g)
clusters(g)$csize
cliques(g)
sapply(cliques(g), length)
largest_cliques(g)
cliques(g)
sapply(cliques(g),length)
a<-largest_cliques(g)
a
clique1<-a[[1]]
g2<-induced.subgraph(graph=g,vids=clique1)
plot(g2)
vcol<-rep("grey80",vcount(g))
vcol[unlist(largest_cliques(g))]<-"gold"
plot(as.undirected(g),vertex.lavel=V(g)$name, vertex.color=vcol)
windows()

1 Ответ

0 голосов
/ 29 мая 2018

У меня есть два предложения.Прежде чем представить их, я настрою основы так, чтобы то, что я делаю, было (в основном) повторяемым.Это просто упрощенная версия того, что вы имели в своем коде, с изменением размера вершины в том виде, в котором оно было у вас.предлагая.В igraph довольно много функций разметки.Просто попробуйте их и посмотрите, что выглядит хорошо.Мне понравился большой макет графика.

set.seed (1234) LO_LGL = layout_with_lgl (g) сюжет (as.undirected (g), layout = LO_LGL, margin = c (-0,25, -0,25))

LesMis - just LGL

Как только вы получите что-то, что довольно близко, вы можете попробовать использовать tkplot, который позволит вам выбирать узлы и перемещать их, чтобы сделать график более читабельным.

tkplot(as.undirected(g), layout=LO_LGL)

Я использовал предыдущий макет в качестве отправной точки и отрегулировал вершины вручную, чтобы сделать график более четким.Это не идеально, но вы можете увидеть некоторые сообщества.

LesMis - tkplot

...