网络可视化R包-geomnet

geomnet是一个基于ggplot2可视化图形和网络的R包,它使用sna包计算网络布局,并且包含了使用ggplot2绘制圆的geom_circle函数。

一、geomnet绘图

install.packages('geomnet')library(dplyr)library(geomnet)data(theme_elements)#theme_elements 分为两组子集,分别edges和vertices,edges中包含child和parent这两列
#数据整理:TEnet <- fortify(as.edgedf(theme_elements$edges[,c("parent", "child")]),                 theme_elements$vertices)#as.edgedf:将数据映射到edgedf#fortify:将网路边的数据转换为geomnet使用的格式

#计算节点的度:TEnet <- TEnet %>% group_by(from_id) %>%           mutate(degree = sqrt(10 * n() + 1))#%>%是dplyr包中的管道函数,把左件的值发送给右件,并作为右件表达式函数的第一个参数#mutate函数是添加新的列,将新增变量放在数据集的最后面

 

1. 例一

ggplot(data = TEnet,       aes(from_id = from_id, to_id = to_id)) +geom_net(layout.alg = "fruchtermanreingold",         #layout.alg是布局使用的算法,有"kamadakawai","fruchtermanreingold","circle",         aes(fontsize = degree), directed = TRUE,         #根据节点度调整节点字的大小         #边有方向         labelon = TRUE, size = 1, labelcolour = 'black',         #labelon给节点添加标签,调整大小和颜色         ecolour = "grey70", arrowsize = 0.5,         #ecolour是边的颜色         #arrowsize调整箭头大小         linewidth =0.5, repel = TRUE         #linewidth是边的宽度         #repel如果为TRUE,则使用ggrepel包geoms而不是ggplot2 geoms绘制节点标签。         ) +  theme_net() +  xlim(c(-0.05, 1.05)) +  ggtitle("layout.alg = fruchtermanreingold") +    #加标题  theme(plot.title = element_text(lineheight=1, face="bold",hjust = 0.5))    #调整标题

 

 

 

2. 例二

library(geomnet)data(blood)ggplot(data = blood$edges, aes(from_id = from, to_id = to)) +  geom_net(colour = "darkred", layout.alg = "circle", labelon = TRUE,           size = 15, directed = TRUE, vjust = 0.5, labelcolour = "grey80",           arrowsize = 1.5, linewidth = 0.5, arrowgap = 0.05,           #arrowgap 箭头到节点的距离           selfloops = TRUE, ecolour = "grey40") +           #selfloops,是否显示循环,若是,则在相应节点附近画一个圆,默认为FALSE           theme_net()

 

 

3. 例三

http://www.stats.ox.ac.uk/~snijders/siena/siena_datasets.htm

获取示例数据

library(geomnet)head(hp.edges)

head(football$vertices)

hp.all <- fortify(as.edgedf(hp.edges), hp.chars, group = "book")#使用name1作为from节点列,使用name2作为to节点列。#如果这是不正确的,则重写dat,以使前两列分别为from和to节点。#分别通过from_id和name连接边缘和节点信息。#仅绘制给定书中具有任何连接的字符。
ggplot(data=hp.all, aes(from_id = from, to_id = to_id)) +  geom_net(fiteach=T, directed = T, size = 3, linewidth =0.5,#网络图是否分别安装在每个面板中           ealpha =0 .5, labelon = T, fontsize = 3, repel = T,           labelcolour = "black", arrowsize = .5, singletons = FALSE,#没有其他联系(度为0)的节点是否绘制,默认为TRUE           aes(colour = house, group = house, shape = gender)) +# 根据house分颜色,house分组,gender分形状  scale_colour_manual(values = c("#941B08","#F1F31C",                                 "#071A80", "#154C07")) +  facet_wrap(~book, labeller = "label_both") +    theme_net() +  theme(panel.background = element_rect(colour = 'black'))

 

 

二、与ggplotly包共用

plotly是交互式绘图展示方法

 

1. 例一

绘制后,将鼠标放置在图中的节点或者边上,会提示节点/边的详细信息
library(geomnet)library(plotly)
data(blood)  #blood是geomnet自带数据bloodnet <- fortify(as.edgedf(blood$edges), blood$vertices)
p <- ggplot(data = bloodnet, aes(from_id = from_id, to_id = to_id))p2 <- p + geom_net(aes(size=Predominance, colour=type, shape=rho, linetype=group_to),                   linewidth=0.75, labelon =TRUE, directed = TRUE, labelcolour="black") +  facet_wrap(~Ethnicity) +    #分面  scale_colour_brewer(palette="Set2")    #主题颜色  ggplotly(p2)

 

 

 

2. 例二

绘制后,将鼠标放置在图中的节点或者边上,会提示节点/边的详细信息。右上方是工具栏。
data(football)  #football是geomnet自带数据ftnet <- fortify(as.edgedf(football$edges), football$vertices)  #合并数据gg <- ggplot(data = ftnet,aes(from_id = from_id, to_id = to_id)) +    geom_net(layout.alg = 'fruchtermanreingold',             aes(colour = value, group = value,             linetype = factor(same.conf != 1)),           linewidth = 0.5,           size = 5, vjust = -0.75, alpha = 0.3) +#alpha是节点的Alpha透明混合处理,取值范围0至1  theme_net() +    #移除背景  theme(legend.position = "bottom") +     #图例位置  scale_colour_brewer("Conference", palette = "Paired")  +    #分组赋值颜色  guides(linetype = FALSE)    #guides,是否移除图例ggplotly(gg)

 

小编总结:

除了Cytoscape软件以外,我们也可使用geomnet包来绘制网络图,而且这种交互式展示方法可用于数据库的设计中,美观且功能性强,大家可以借鉴哦!
生物信息学

如何在NCBI中下载SRA数据?

2020-8-28 4:16:21

生物信息学

突变signature分析R包“YAPSA”

2020-8-28 4:23:45

加入Q群
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索