大家应该熟悉网络调控在基因关系之间的重要性,今天我们为大家展示在R语言中如何实现网络图的绘制。绘制的包有很多,我们今天不一一介绍从我个人角度推荐igrapgh。因为它基于Java可以介入各平台使用。
首先,看下其官网(https://igraph.org/):
接下来,我们看下其安装与使用,安装我们就不赘述了(install.packages())。主要看下如何绘制一个完整的网络图:
1. 前期数据的整理。
首先构建数据的数据框:
actors <-data.frame(name=c("Alice", "Bob", "Cecil","David",
"Esmeralda"),
age=c(48,33,45,34,21),
gender=c("F","M","F","M","F"))
以上就是数据的属性数据框。
2. 数据的关系矩阵构建:
relations <-data.frame(from=c("Bob", "Cecil", "Cecil","David",
"David", "Esmeralda"),
to=c("Alice","Bob", "Alice", "Alice", "Bob","Alice"),
same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))
以上就是数据中元素的相互关系,以及属性值:
接下来我们用到包中的函数graph_from_data_frame构建graph。其中主要的参数是directed确定关系的方向性。
g<-graph_from_data_frame(relations,directed=TRUE,vertices= actors)
当然相对于生成graph函数,它还提供转化回数据框的函数as_data_frame。
数据的前期准备就此结束,接下看如何绘制网络图。
3. plot函数绘制网络图。
参数详解:
lty指的网络图边的样式0-空白,1-实线,2-虚线,3-点线,4-点虚线,5-长虚线,6- twodash。
vertex.size 指的每个标签的大小,值为整数。
layout指的网络图的布局。layout.auto-自动布局,layout_as_star-星型布局,layout.circle-环形布局,layout_randomly-随机布局,layout_as_tree-树状布局。
main绘制的网络图的标题。
其他的参数类似R语言自带的plot函数。
在此我们展示下环形布局:
plot(g,vertex.size=20,layout=layout.circle,main="环形布局")
以上就是绘制网络图的过程,那么如果我们想对网络图中的点以及边进行美化,就用到了下面两个函数V(点修饰)和E(边修饰)。
V(g)$label.font <-2# 设置点标签的字体为粗体
V(g)$label.color <-"red"# 设置点标签颜色为白色
V(g)$label.cex <-1# 设置点标签字体大小
E(g)$lty<-5# 设置边为长虚线
E(g)$color<-"blue"# 设置边的颜色
plot(g,vertex.size=20,layout=layout.circle,main="环形布局")# 环形布局
更加美化的网络图还需要根据每个人的审美去绘制。