R语言可视化(十二):MA散点图绘制

12. MA散点图绘制


清除当前环境中的变量

rm(list=ls())

设置工作目录

setwd("C:/Users/Dell/Desktop/R_Plots/12MAplot/")

读取示例数据

data <- read.table("demo_maplot.txt",header = T,
                   check.names = F,row.names = 1,sep="\t")
head(data)
##                 R0_count R3_count R0_fpkm R3_fpkm     log2FC       Pvalue
## OS01T0100100-01      234      199   2.900   2.660 -0.1246267 0.3657893570
## OS01T0100200-01       21       31   0.800   1.280  0.6780719 0.1268392510
## OS01T0100300-00        1        0   0.060   0.001 -5.9068906 1.0000000000
## OS01T0100400-01       56      123   0.980   2.310  1.2370392 0.0000000393
## OS01T0100466-00        0        2   0.001   0.090  6.4918531 0.5000249990
## OS01T0100500-01      323      412   5.460   7.500  0.4579896 0.0000360000
##                         FDR significant
## OS01T0100100-01 0.524535856          no
## OS01T0100200-01 0.222003795          no
## OS01T0100300-00 1.000000000          no
## OS01T0100400-01 0.000000225          up
## OS01T0100466-00 0.653216704          no
## OS01T0100500-01 0.000144630          no

base plot函数绘制MA散点图

attach(data)

# 基础MAplot
plot(x=(log2(R0_fpkm)+log2(R3_fpkm))/2,y=log2FC)
image.png
# 设置点的形状,颜色,坐标轴标题
plot(x=(log2(R0_fpkm)+log2(R3_fpkm))/2,y=log2FC,
     pch=20,col=ifelse(significant=="up","red",
                       ifelse(significant=="down","green","gray")),
     main="MAplot of R3-vs-R0",
     xlab = "Log2 mean expression",ylab = "Log2 fold change")
image.png
# 添加水平线和图例
abline(h = 0,lty=1,lwd = 2,col="blue")
abline(h = c(-1,1),lty=2,lwd = 2,col="black")
# 添加图例
legend("topright", inset = 0.01, title = "Significant", c("up","no","down"), 
       pch=c(16,16,16),col = c("red","gray","green"))
detach(data)
image.png

ggplot2包绘制MA散点图

library(ggplot2)
head(data)
##                 R0_count R3_count R0_fpkm R3_fpkm     log2FC       Pvalue
## OS01T0100100-01      234      199   2.900   2.660 -0.1246267 0.3657893570
## OS01T0100200-01       21       31   0.800   1.280  0.6780719 0.1268392510
## OS01T0100300-00        1        0   0.060   0.001 -5.9068906 1.0000000000
## OS01T0100400-01       56      123   0.980   2.310  1.2370392 0.0000000393
## OS01T0100466-00        0        2   0.001   0.090  6.4918531 0.5000249990
## OS01T0100500-01      323      412   5.460   7.500  0.4579896 0.0000360000
##                         FDR significant
## OS01T0100100-01 0.524535856          no
## OS01T0100200-01 0.222003795          no
## OS01T0100300-00 1.000000000          no
## OS01T0100400-01 0.000000225          up
## OS01T0100466-00 0.653216704          no
## OS01T0100500-01 0.000144630          no

# 基础MAplot
ggplot(data,aes(x=(log2(R0_fpkm)+log2(R3_fpkm))/2,y=log2FC)) + geom_point()
image.png
# 添加点的颜色,坐标轴标题
ggplot(data,aes(x=(log2(R0_fpkm)+log2(R3_fpkm))/2,y=log2FC,color=significant)) + 
  geom_point() + theme_bw() +
  labs(title="MAplot of R3-vs-R0",x="Log2 mean expression", y="Log2 fold change")
image.png
# 更改颜色,主题,添加水平线和垂直线,去掉网格线
p <- ggplot(data,aes(x=(log2(R0_fpkm)+log2(R3_fpkm))/2,y=log2FC,color=significant)) + 
  geom_point() + theme_bw() +
  labs(title="MAplot of R3-vs-R0",x="Log2 mean expression", y="Log2 fold change") +
  scale_color_manual(values = c("green","gray","red")) +
  geom_hline(yintercept=0, linetype=1, colour="black") +
  geom_hline(yintercept=c(-1,1), linetype=2, colour="gray30") +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.background = element_blank())
p
image.png
# 添加基因注释信息
library(ggrepel)
gene_selected <- c("OS12T0196300-01","OS01T0239150-00","OS01T0621400-01",
                   "OS02T0577600-00","OS11T0676100-00","OS12T0613150-00",
                   "OS01T0225500-00","OS02T0101900-01")
data_selected <- data[gene_selected,]
head(data_selected)
##                 R0_count R3_count R0_fpkm R3_fpkm    log2FC    Pvalue
## OS12T0196300-01        3        0   0.070   0.001 -6.129283 0.2500375
## OS01T0239150-00        1        0   0.060   0.001 -5.906891 1.0000000
## OS01T0621400-01        3        0   0.060   0.001 -5.906891 0.2500375
## OS02T0577600-00        2        0   0.060   0.001 -5.906891 0.5000250
## OS11T0676100-00        0        2   0.001   0.070  6.129283 0.5000250
## OS12T0613150-00        0        3   0.001   0.070  6.129283 0.2500375
##                       FDR significant
## OS12T0196300-01 0.3849834          no
## OS01T0239150-00 1.0000000          no
## OS01T0621400-01 0.3849834          no
## OS02T0577600-00 0.6532167          no
## OS11T0676100-00 0.6532167          no
## OS12T0613150-00 0.3849834          no

p + geom_text_repel(data=data_selected, show.legend = F, color="red",
                    aes(label=rownames(data_selected)))
image.png
p + geom_label_repel(data=data_selected, show.legend = F,color="blue",
                     aes(label=rownames(data_selected)))
image.png

ggpubr包绘制MAplot

library(ggpubr)

# 加载示例数据集
data(diff_express)
head(diff_express)
##                     name     baseMean log2FoldChange         padj
## ENSG00000000003   TSPAN6    0.1184475      0.0000000           NA
## ENSG00000000419     DPM1 1654.4618144      0.6789538 5.280802e-02
## ENSG00000000457    SCYL3  681.0463277      1.5263838 3.915112e-07
## ENSG00000000460 C1orf112  389.7226640      3.8933573 1.180333e-14
## ENSG00000000938      FGR  364.7810090     -2.3554014 1.559228e-04
## ENSG00000000971      CFH    1.1346239      1.2932740 4.491812e-01
##                 detection_call
## ENSG00000000003              0
## ENSG00000000419              1
## ENSG00000000457              1
## ENSG00000000460              1
## ENSG00000000938              1
## ENSG00000000971              0

# 基础MAplot
ggmaplot(diff_express, fdr = 0.05, fc = 2, size = 0.4,
         palette = c("red","green","gray"))
image.png
# 更改点的颜色,添加标题,更改基因注释名,字体,背景主题
ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"),
         fdr = 0.05, fc = 2, size = 0.6,
         palette = c("#B31B21", "#1465AC", "darkgray"),
         genenames = as.vector(diff_express$name),
         xlab = "M",ylab = "A",
         legend = "top", top = 20,
         font.label = c("bold", 11),
         font.legend = "bold",
         font.main = "bold",
         ggtheme = ggplot2::theme_minimal())
image.png
# 添加基因注释边框,更换top基因筛选标准
ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"),
         fdr = 0.05, fc = 2, size = 0.4,
         palette = c("#B31B21", "#1465AC", "darkgray"),
         genenames = as.vector(diff_express$name),
         legend = "top", top = 20,
         font.label = c("bold", 11), label.rectangle = TRUE,
         font.legend = "bold", select.top.method = "fc",
         font.main = "bold",
         ggtheme = ggplot2::theme_minimal())
image.png
sessionInfo()
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=Chinese (Simplified)_China.936 
## [2] LC_CTYPE=Chinese (Simplified)_China.936   
## [3] LC_MONETARY=Chinese (Simplified)_China.936
## [4] LC_NUMERIC=C                              
## [5] LC_TIME=Chinese (Simplified)_China.936    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] ggpubr_0.2.1  magrittr_1.5  ggrepel_0.8.1 ggplot2_3.2.0
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.5       knitr_1.23       tidyselect_0.2.5 munsell_0.5.0   
##  [5] colorspace_1.4-1 R6_2.4.0         rlang_0.4.7      stringr_1.4.0   
##  [9] dplyr_0.8.3      tools_3.6.0      grid_3.6.0       gtable_0.3.0    
## [13] xfun_0.8         withr_2.1.2      htmltools_0.3.6  yaml_2.2.0      
## [17] lazyeval_0.2.2   digest_0.6.20    assertthat_0.2.1 tibble_2.1.3    
## [21] ggsignif_0.5.0   crayon_1.3.4     purrr_0.3.2      glue_1.3.1      
## [25] evaluate_0.14    rmarkdown_1.13   labeling_0.3     stringi_1.4.3   
## [29] compiler_3.6.0   pillar_1.4.2     scales_1.0.0     pkgconfig_2.0.2
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350