pythonic生物人

复现Science期刊图,换数据可用!

本次使用R语言复现一下Science正刊中的1张图!

science.aaw9285原图
science.aaw9285原图
❤️复现效果图❤️
❤️复现效果图❤️

如何读图?

该图为包珠图(Circular Packing),适用于展示具有层级结构的分类数据,其通过嵌套圆形的方式直观体现数据的层次关系。

Image

原文中的上图作用:

  • 展示在有利土壤(C)或抑病土壤(S)中生长的植物,其内生细菌群落的差异丰度情况。细菌群落的差异丰度分析基于从宏基因组中提取的16S rRNA reads。
  • 圆圈的大小表示差异丰度类群的平均reads相对丰度,最大的圆圈代表门(Phylum)水平,其内的圆圈依次代表纲(Class)、科(Family)和属(Genus)。
  • 在C与S土壤中,若在C中显著富集(FDR<0.1)则以红色标示,若在S中富集则以绿色标示;无显著差异的类群和功能以黄色标示。

如何实现图?

下面使用ggplot2及其扩展工具来实现包珠图(Circular Packing),

✅读入测试数据,

Image

以第一行数据flare.analytics.cluster.AgglomerativeCluster为例,就是展示最外层flare,依次到内层AgglomerativeCluster的层级关系,AgglomerativeCluster节点对应数值为3938。

✅关键代码,

# 关键代码
ggraph(mygraph, layout = 'circlepack', weight=size) + 
  geom_node_circle(aes(fill = depth)) + 
  geom_node_text(aes(filter = depth == 1, label = shortName), #这里显示第2层节点标签
                 size = 5,
                 color = "white") 

✅从以下多方面美化:

  • geom_node_circle设置区域属性,例如,填充色、区域轮廓size等。
  • geom_node_text个性化根节点文本
  • scale_fill_xxx个性化配色等。

美化后效果,

Image

尝试不同的palette,

Greys
Greys
Greens
Greens
RdPu
RdPu
Spectral
Spectral

本期结束!


获取绘图代码+测试数据+数据处理方法+依赖包安装方法,

👇(备注:299)

图片

-推荐阅读-

👉matplotlib教程:20w字+数百张图形+1W行代码+详细代码注释+学习交流群

图片

👉seaborn教程:12.3万字+500多张图形+8000行代码

图片

👉R可视化教程:39个章节+20w字+数百张图

图片
图片