
致谢:首先感谢ChatGPT pro对我函数无数次的测试及修正!最终促成了这个内容!
起源于五年前的一篇cell,又被唤醒于2024年的一篇nature medicine。两篇文章这个图都是关于WGCNA后续结果的展示,胜在这个网络布局很好。被无数次问道如何制作,最开始的Cell是2020年的,一直是很多人的执念,所以下定决心实现。Cell原文描述应该是使用cytoscape进行网络可视化;Nature medicine描述采用的是igraph力导向布局,但是很难直接使用igraph的默认layout得到这个结果。所以重点在于layout布局,这里我们也是利用了WGCNA下游结果((视频教程)转录组/蛋白组WGCNA分析及个性化作图---你的CNS文章值得拥有)进行展示,全程纯代码实现网络效果,包括标注module通路!

(reference:【1】Chen et al., 2020, Cell 182, 226–244 July 9, 2020 ª 2020 Elsevier Inc. https://doi.org/10.1016/j.cell.2020.06.012,
【2】https://doi.org/10.1038/s41591-023-02790-x)
在整个过程中,在网络的构建步骤,我们写了一个通用的函数,所以这个网络不仅仅只针对WGCNA结果的展示,有类似的展示比如大型基因互作展示、hdWGCNA、hotspots、NMF等等,准备需要的数据,就可以实现。这个函数网络是随机分布的,可以尝试得到自己满意的分布:

library(igraph)
library(RColorBrewer)
edge_file <- read.csv('./edge_file.csv',header = T,row.names = 1)
nodes_files <- read.csv('./gene_module.csv',header = T,row.names = 1)
#plot
#================================================================================
png("test.png", width = 1200, height = 1200, res = 150)
set.seed(12345)
ks_large_network(edge_file, nodes_files,
cluster_spread=0.06,
pull_toward_center=0.25,
vertex_size=3)
dev.off()

得到我们需要的网络布局之后,就可以提取坐标信息在ggplot2中进行可视化了,提取的目的主要是为了后续其他操作能够更加灵活,比如添加module通路,这里实现了纯代码添加,不需要ps/AI。

也可以自定义基因分类,像文章中那样,这网络上展示基因上下调:
