1.引言
ggraph是R語(yǔ)言中一款功能強(qiáng)大的社會(huì)網(wǎng)絡(luò)繪圖工具。用戶可以基于類似ggplot2的邏輯進(jìn)行輕松繪圖,例如:
library(ggraph, tidygraph)
# generate the data
gr1 <- create_notable('bull') %>%
mutate(name = letters[1:5])
#plot
gr1 %>%
ggraph(layout = 'kk') +
geom_edge_link() +
geom_node_point(size = 8, colour = 'steelblue') +
geom_node_text(aes(label = name), colour = 'white', vjust = 0.4) +
ggtitle('automatic layout') +
theme_graph()

Fig.1
然而,有時(shí)我們希望手動(dòng)對(duì)節(jié)點(diǎn)的位置進(jìn)行微調(diào),例如,我們覺得上圖中的節(jié)點(diǎn)d有些太向左上了,最好向下,再往右調(diào)整一些,這時(shí)該怎么辦?
2. 解決方法
先創(chuàng)建layout:
gr1_layout <- create_layout(gr1, layout = "kk")
查看自動(dòng)生成的每個(gè)節(jié)點(diǎn)的x和y坐標(biāo):
> gr1_layout
x y name .ggraph.orig_index circular .ggraph.index
1 0.6484507 0.08606775 a 1 FALSE 1
2 -0.1057830 0.07934361 b 2 FALSE 2
3 0.2814265 -0.57287605 c 3 FALSE 3
4 -0.7282047 0.52323288 d 4 FALSE 4
5 0.3731192 -1.33184827 e 5 FALSE 5
可以看到,名稱為d的節(jié)點(diǎn),坐標(biāo)為(-.7282047, .52323288),我們只需稍作調(diào)整,再繪圖就可以:
# 調(diào)整
gr1_layout[4,1:2] <- c(-.3, -1)
# 繪圖
ggraph(gr1_layout) +
geom_edge_link() +
geom_node_point(size = 8, colour = 'steelblue') +
geom_node_text(aes(label = name), colour = 'white', vjust = 0.4) +
ggtitle('Manual Layout') +
theme_graph()

Fig.2