gganatogram包完成精美解剖模型绘制
大家好,我是阿琛。随着生信分析的不断进步,各种研究套路不断发展。在泛组织研究中,除了通过普通的箱线图等形式来展示某特定基因或者特征来表达在人体中的整体表达分布外,我们可以尝试使用其他的方法来呈现数据。gganatogram包是一个可以快速绘制各种解剖图的R包,最初发布于2018年,可以用于绘制不同生物的解剖模型,并且对组织的颜色进行赋值展示,更加直观的展示结果。
下面,我们一起来看下如何使用gganatogram包绘制相关模型展示图。
1.R包安装与读取

1.1 R包的安装

###从GitHub安装devtools::install_github("jespermaag/gganatogram")

对于gganatogram包的安装,需要从GitHub上进行下载。

1.2 读取R包

library(gganatogram)library(dplyr)library(ggplot2)library(ggpolypath)

使用library()来检验是否安装成功。此外,gganatogram包的使用需要同时读取ggplot2包和ggpolypath包。
2.绘制人体表达图谱
首先,我们使用gganatogram包内置数据hgMale_key和hgFemale_key数据集来绘制人体解剖图谱。
hgMale<- gganatogram(data = hgMale_key,fillOutline = '#a6bddb',organism = 'human',sex = 'male',fill = "colour") +theme_void()hgFemale<- gganatogram(data = hgFemale_key,fillOutline = '#a6bddb',organism = 'human',sex = 'female',fill = "colour") +theme_void()hgMale+ hgFemale

在gganatogram()函数中,参数data指定输入数据,其中包含器官的颜色和对应的数值,需要注意区分数据对应的男性或者女性;参数fillOutline表示解剖图外围的填充色,其默认数值为#a6bddb;参数organism为相应的生物类型,在此我们选择human;
结果显示,在图中,分别展示了男性(左侧)和女性(右侧)两个图形,而且器官的颜色由输入数据集中器官对应的颜色来填充。
然而,在实际分析与文章使用中,我们不仅仅只是想展示人体的各个器官而已。当获得某一基因在不同器官内的表达值后,我们可以对解剖图进一步拓展。接着,我们使用数值对器官内的颜色用器官的表达值来进行修改。
hgMale_2<- gganatogram(data = hgMale_key,fillOutline = '#a6bddb',organism = 'human',sex = 'male',fill = "value") +theme_void()+scale_fill_continuous()hgFemale_2<- gganatogram(data = hgFemale_key,fillOutline = '#a6bddb',organism = 'human',sex = 'female',fill = "value") +theme_void()+scale_fill_continuous()hgMale_2+ hgFemale_2

将数据集中value值指定给参数fill后,可以看到,在结果图中,比例尺展示了颜色对应的数值,同时人体模型中颜色越蓝,表示该器官内的表达值越高,从而形象的展示某个基因或特征在男性和女性中的整体分布情况。
3.绘制器官对应表达图
除了绘制整体分布图后,我们还可以针对特定的器官进行赋值和修改。
首先,我们来看一下人体解剖图中所包含的器官种类。
hgMale_key$organ

结果显示:
hgFemale_key$organ

结果显示:
随后,我们构建一个包含不同器官表达的数据框。
organPlot <- data.frame(organ = c("heart", "leukocyte", "nerve", "brain", "liver", "stomach", "colon"), type = c("circulation", "circulation", "nervous system", "nervous system", "digestion", "digestion", "digestion"), colour = c("red", "red", "purple", "purple", "orange", "orange", "orange"), value = c(10, 5, 1, 8, 2, 5, 5), stringsAsFactors=F)

在此,分别对“心脏”,“白细胞”,“神经”,“大脑”,“肝脏”,“胃”,“结肠”等器官的颜色和表达值进行指定;
gganatogram(data = organPlot, fillOutline = '#a6bddb', organism = 'human', sex = 'male', fill = "colour")

结果显示
在解剖图中,展示了数据集organPlot包含的器官类型,且不同器官的顺序与数据集中器官顺序一致;因此,在图中肝(liver),胃(stomach)和结肠(colon)叠放在图的最上方。
接下来,我们对其中的参数进一步修改。
gganatogram(data = organPlot, fillOutline = '#a6bddb', organism = 'human', sex='male', fill = "value") + theme_void() + scale_fill_gradient(low = "white", high = "red")

结果显示:
gganatogram(data = organPlot, outline = T, fillOutline = '#a6bddb', organism = 'human', sex = 'male', fill = "colour") + facet_wrap(~type) + theme_void()

与ggplot()函数对应的语法一致,gganatogram()函数是基于ggplot()函数所创建的,同样可以使用facet_wrap()函数来对图形进行分面处理。结果显示,对type类型进行分面后,可以看到,在三个解剖图中分别展示了循环系统,消化系统和神经系统中器官的情况。
4.其它生物解剖模型
除了人体解剖模型外,在gganatogram包中还提供了其他类型的生物解剖模型,包括常见的鼠(Mouse),细胞(Cell),牛,植物等等。
gganatogram(data=mmMale_key, outline = T, fillOutline = '#a6bddb', organism = 'mouse', sex = 'male', fill = "colour") + theme_void() + coord_fixed()

结果显示:
gganatogram(data = cell_key[['cell']], outline = T, fillOutline='steelblue', organism="cell", fill="colour") + theme_void() + coord_fixed()

结果显示:
5.在线编辑器
除了使用R来绘制图后,作者还制作了相应的shiny app(https://jespermaag.shinyapps.io/gganatogram/),可以通过鼠标点点点完成整个绘制过程。不过,限制的是,该app每个月会有25小时的限制时间。
library(shiny)runGitHub("gganatogram", "jespermaag", subdir = "shiny")

可以看到,在Species中选择物种类型,包括前面提到的人类,鼠,细胞等类型;勾选“Show outline”;在Fill中选择以color或者value来填充器官颜色;从而快速完成前面讲述的绘制结果。
最后,关于gganatogram包的使用,记得在文章中引用相关的文献
“Maag JLV. gganatogram: An R package for modular visualisation of anatograms and tissues based on ggplot2 [version 1; referees: 1 approved]. F1000Research 2018, 7:1576 (doi: 10.12688/f1000research.16409.1)”。
回复“阿琛46”即可获得本次的代码~
系列传送门
R语言小白入门课|一刻钟带你学会R数据转化
END

撰文丨 阿  琛
排版丨四金兄
值班 | 阿   琛

主编丨小雪球
长按识别二维码免费包邮领取!
继续阅读
阅读原文