前几天想画个网络关系图,听说ggnet还行,就寻摸着试试看。结果一搜教程全是英文的,看得我脑壳疼。行,那就自己硬着头皮捣鼓呗。
第一步:安装这玩意儿
我这人懒,直接用RStudio。打开软件,直奔控制台,啪啪敲了行代码:*("GGally"),回车!好家伙,进度条嘎嘎跑,看着挺顺利。装完GGally,顺手把它的好基友network也装了,代码是 *("network")。搞定,开整!
第二步:搞点数据试试水
手上没啥现成的网络数据,咋整?造呗!瞎编了几个节点的关系:
library(GGally)library(network)

# 随便造几个节点关系
fake_data <- *(

谁 = c("我", "我", "老王", "老王", "老李"),
认识谁 = c("老王", "老李", "老李", "老张", "老张")
# 转成network认识的格式
fake_net <- network(fake_data, directed = TRUE)
反正就意思意思,弄个超小的网络看看效果。
第三步:上家伙画图!
想着ggnet画图应该就是ggnet这个函数?直接套!啪啪敲了:
ggnet2(fake_net)
一按回车,RStudio右边咣当蹦出来一张图!有戏!虽然图丑得要死——几个灰点挤成一团,线乱糟糟的,标签也堆一块儿看不清。但好歹算是画出来了,证明这玩意儿能跑通。
第四步:给它整整容
这图能看?肯定不行!得调。我就在那个ggnet2函数里一顿塞参数: * = 12, # 把点搞大点 * = "skyblue", # 颜色换个蓝的,清爽 * = 0.5, # 线细点 label = TRUE, # 标签给我显示出来! * = 4 # 标签字体别太小 回车再看!顺眼多了!点变大了,蓝幽幽的,标签也清楚显示了谁是谁,线细了之后没那么乱了。基本能看出“我”连着“老王”和“老李”,“老王”又连着“老李”和“老张”。 还试了试箭头(* = 7, * = 0.02),确实能标方向。 想着给不同节点加点不同颜色?比如按重要程度分。又在造的数据里加了一列‘重要性’,代码噼里啪改了一通: 然后画图的时候告诉ggnet2按这个‘重要性’上色:ggnet2(fake_net, * = 12, * = "重要性", # 这回按属性着色 palette = "Set1", # 换个颜色板 * = 0.5, label = TRUE, * = 4, * = 7, * = 0.02 哈!这回出来几个颜色不一样的点,一看图就知道哪个节点“重要性”高一点。 说真的,一开始看着一堆参数是有点懵,但多试几次,改改这个动动那个,效果马上就出来了。别怕丑,慢慢调,总能调出个能看的图。搞科研写报告啥的,用这个凑个简单示意图挺方便的。
ggnet2(fake_net,第五步:加点花色
fake_net %v% "重要性" <- c(3, 1, 2, 2) # 给节点加个属性