查看原文
其他

igraph 牛刀小试

JunJunLab 老俊俊的生信笔记 2022-08-15


点击


上方


关注我们~





igraph 来把牛郎织女牵


igraph 包是可视化网络关系图的强大软件,有 pythonC语言R版本的。

安装和加载:

## Download and install the package
install.packages("igraph")

## Load package
library(igraph)

参数很多很多...。需要改哪个再去查阅会方便一些。简单画个图,可视化基因间的相互关系。

创建数据:

# 构建数据
da <- data.frame(from = rep('gene1',16),to = paste('gene',LETTERS[1:16],sep = ''),
                 value = seq(-2,2,length.out = 16))
da

    from    to      value
1  gene1 geneA -2.0000000
2  gene1 geneB -1.7333333
3  gene1 geneC -1.4666667
...

转换为 igraph 对象:

# 转为网络对象
g <- graph_from_data_frame(da,directed = F)
g

IGRAPH 4449d0d UN-- 17 16 --
+ attr: name (v/c), value (e/n)
+ edges from 4449d0d (vertex names):
 [1] gene1--geneA gene1--geneB gene1--geneC gene1--geneD gene1--geneE gene1--geneF gene1--geneG
 [8] gene1--geneH gene1--geneI gene1--geneJ gene1--geneK gene1--geneL gene1--geneM gene1--geneN
[15] gene1--geneO gene1--geneP

# 查看属性
class(g)
[1"igraph"

默认绘图:

# 默认绘图
plot(g)

我们可以根据格局样式节点标签颜色线等属性进行美化调整。

格局样式:layout:

节点和边的属性参数(from:生信学习手册):

接下来美化一下:

# 美化
plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     sub = 'By laojunjun'# 子标题
     layout = layout_in_circle, # 网络样式
     vertex.color = '#FFBE0F'# 节点颜色
     vertex.frame.color = 'black'# 节点边框颜色
     vertex.size = 25# 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     edge.color = 'black'# 边颜色
     edge.width = '2'# 变粗细
     edge.curved = 0# 边的弯曲程度
     frame = T# 是否加图形边框
     asp = 1# 图形的纵横比
)

给节点设置不同颜色填充:

# 设置节点不同颜色
V(g)$color <- rainbow(16)

plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     # sub = 'By laojunjun', # 子标题
     layout = layout_in_circle, # 网络样式
     # vertex.color = '#FFBE0F', # 节点颜色
     vertex.frame.color = 'black'# 节点边框颜色
     vertex.size = 25# 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     vertex.label.color = 'black'# 节点标签颜色
     edge.color = 'black'# 边颜色
     edge.width = '2'# 变粗细
     edge.curved = 0# 边的弯曲程度
     frame = F # 是否加图形边框
)

设置边的颜色:

# 设置边不同颜色
E(g)$color <- rainbow(16)

plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     layout = layout_in_circle, # 网络样式
     vertex.color = '#C2F784'# 节点颜色
     vertex.frame.color = 'black'# 节点边框颜色
     vertex.size = 25# 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     vertex.label.color = 'black'# 节点标签颜色
     # edge.color = 'black', # 边颜色
     edge.width = '2'# 变粗细
     edge.curved = 0# 边的弯曲程度
     frame = F # 是否加图形边框
)

设置节点为渐变色:

#生成渐变色
color <- colorRampPalette(c("blue","white","red"))(16)

V(g)$color[1:16] <- color

plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     layout = layout_in_circle, # 网络样式
     vertex.frame.color = 'black'# 节点边框颜色
     vertex.size = 25# 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     vertex.label.color = 'black'# 节点标签颜色
     edge.color = 'black'# 边颜色
     edge.width = '2'# 变粗细
     edge.curved = 0# 边的弯曲程度
)

换个展现形式:

# 换个格局
plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     layout = layout.sphere, # 网络样式
     vertex.frame.color = 'black'# 节点边框颜色
     vertex.size = 25# 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     vertex.label.color = 'black'# 节点标签颜色
     edge.color = 'black'# 边颜色
     edge.width = '2'# 变粗细
     edge.curved = 0# 边的弯曲程度
)

根据数值大小设置节点大小:

# 根据数值大小设置节点大小
V(g)$size <- sample(15:28,16,replace = T)

plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     layout = layout_in_circle, # 网络样式
     vertex.color = '#FFBCBC'# 节点颜色
     vertex.frame.color = 'black'# 节点边框颜色
     # vertex.size = 25, # 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     vertex.label.color = '#CE1212'# 节点标签颜色
     edge.color = 'black'# 边颜色
     edge.width = '2'# 变粗细
     edge.curved = 0.5# 边的弯曲程度
)

根据数值大小设置边粗细:

# 根据值大小设置边宽度
E(g)$width <- sample(1:8,16,replace = T)

plot(g, # 网络数据
     main = 'My first Network Plot'# 标题
     layout = layout_in_circle, # 网络样式
     vertex.color = '#FFBE0F'# 节点颜色
     vertex.frame.color = 'black'# 节点边框颜色
     vertex.size = 25# 节点大小
     vertex.label.cex = 1.2# 节点标签大小
     vertex.label.color = 'black'# 节点标签颜色
     edge.color = 'black'# 边颜色
)

好了,今天就到这里了。祝大家七夕节快乐,早日找到属于自己的另一半!



收官!


代码 我上传到 QQ 群 老俊俊生信交流群 文件夹里。欢迎加入。加我微信我也拉你进 微信群聊 老俊俊生信交流群 哦。

群二维码:


老俊俊微信:




知识星球:



所以今天你学习了吗?

欢迎小伙伴留言评论!

今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!

推 荐 阅 读




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存