GEO数据挖掘

批量绘制配对样本差异基因的箱线图

2020-02-26  本文已影响0人  小洁忘了怎么分身

花花写于2020-2-26

今天批量绘制GEO配对样本差异基因的箱线图

1. 获取数据

这个例子是GSE5109,由6个配对样本组成,输入数据是表达矩阵、分组信息、配对信息以及limma差异分析得到的结果表格。

load("geo_pair_boxplot.Rdata")
expm[1:4,1:4]
#>        GSM101299 GSM101300 GSM101301 GSM101302
#> STK26   5.754235  6.659144  2.233099  6.353956
#> VMO1    9.222983  7.538749  5.291330  6.947587
#> CNKSR2  7.233939  7.306732  4.274562  7.785351
#> IL17RE  7.604526  7.677775  4.684485  7.409410
group_list
#> [1] post post pre  post pre  pre 
#> Levels: pre < post
pairinfo
#> [1] 1 2 1 3 2 3
#> Levels: 1 2 3
head(deg)
#>       logFC  AveExpr         t      P.Value adj.P.Val         B
#> 1  2.662621 4.373020  12.93505 0.0001471005 0.9278859 -4.320673
#> 2  2.467153 6.158566  10.93078 0.0002945367 0.9278859 -4.324235
#> 3  2.237728 5.859695  10.80083 0.0003093558 0.9278859 -4.324533
#> 4  2.039293 6.121906  10.60373 0.0003336256 0.9278859 -4.325005
#> 5  2.055491 5.700167  10.39701 0.0003616455 0.9278859 -4.325528
#> 6 -1.955322 6.733026 -10.06996 0.0004121430 0.9278859 -4.326419
#>       probe_id symbol change        v ENTREZID
#> 1  224407_s_at  STK26     up 3.832386    51765
#> 2  235751_s_at   VMO1     up 3.530861   284013
#> 3   1554607_at CNKSR2     up 3.509542    22866
#> 4    229401_at IL17RE     up 3.476741   132014
#> 5   1558323_at TMEM72     up 3.441717   643236
#> 6 1556411_s_at     KY   down 3.384952   339855

2.作图

我们以logFC绝对值最大的几个基因作箱线图,比较每个人在手术前后的基因表达量。做几张图就改n等于几,这里以10张图为例。

通过搜索和探索解决了以下几个问题:

1.实现顺序调整:上调和下调基因分别在一起,不管几个,都是先画下调,再画上调。

  1. ggplot2批量绘图的传参问题,aes_string代替aes,就可以使用列名取子集得到的字符串了。

3.patchwork多子图拼图,可以将子图组成一个列表,作为wrap_plots的参数,这一点完美代替了gridarrange。

n = 10
library(ggplot2)
x = deg$symbol[order(head(deg$logFC,n))]
dat <- data.frame(pairinfo=pairinfo,group=group_list,t(expm[x,]))
pl = list()
for(i in 1:n){
  pl[[i]] = ggplot(dat, aes_string("group",colnames(dat)[i+2],fill="group")) +
    geom_boxplot() +
    geom_point(size=2, alpha=0.5) +
    geom_line(aes(group=pairinfo), color="black", linetype="11") +
    xlab("") +
    ylab(paste("Expression of",colnames(dat)[i+2]))+
    theme_classic()+
    theme(legend.position = "none")+
    scale_fill_manual(values = c("#00AFBB", "#E7B800"))
}
#拼图
library(patchwork)
pb_top10= wrap_plots(pl,nrow = 2)+plot_annotation(tag_levels = 'a')
pb_top10

前面还分享过绘制其他图的代码:
PCA是热图的另一种表现形式
geo配对样本差异基因的热图
在火山图上面标记基因
大佬新包patchwork:可能是迄今为止最优秀的拼图包
用patchwork把他们凑在一起,画面简直不要太美:

GSE5109做做看~以后他就是我geo授课的配对样本示例了。

上一篇下一篇

猜你喜欢

热点阅读