簡體   English   中英

如何更清晰地用R繪制社交網絡圖?

[英]How to draw social network graph with R more clearly?

我現在正在使用 lesmis.gml 做網絡分析作業。 我無法調整圖形節點的距離:有超過 70 個節點並且節點太近。 圖是變量 g 和 g2。 圖看起來很奇怪。(圖片)這是我使用 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()

我有兩個建議。 在介紹它們之前,我將設置基礎知識,以便我所做的(大部分)可重復。 這只是您代碼中的簡化版本,並更改​​了您擁有的頂點大小。

library(igraph)
g<-read.graph("temp/lesmis.gml", format=c("gml"))
V(g)$size<-igraph::degree(g)/2

btw<-igraph::betweenness(g)
btw.score<-round(btw)+1
btw.colors<-rev(heat.colors(max(btw.score)))
V(g)$color<-btw.colors[btw.score]
  1. 我認為這就是@nhl 的建議。 igraph 中有不少布局功能。 只需嘗試一堆,看看什么看起來不錯。 我有點喜歡大圖布局。

    設置種子(1234)
    LO_LGL = layout_with_lgl(g)
    情節(as.undirected(g),布局= LO_LGL,邊距= c(-0.25,-0.25))

LesMis - 只是 LGL

  1. 一旦你得到非常接近的東西,你可以嘗試使用tkplot這將允許你選擇節點並移動它們以使圖形更具可讀性。

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

我以之前的布局為起點,手動調整頂點,使圖形更清晰。 它並不完美,但您可以看到一些社區。

LesMis - tkplot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM