R语言ggplot2绘制箱线图

欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA、GEO数据挖掘。


R语言ggplot2绘制箱线图 

差异基因与基因交集

if(T){
require(tidyverse)
AS_gene<-read.table("F:/Bioinfor_project/Breast/AS_research/AS/result/BRCA_marker_cox_single_all.txt",header =T,sep = "\t") 
AS_gene[1:5,1:5]
final_DEmRNA<-read.csv("F:/Bioinfor_project/Breast/AS_research/AS/result/TNBC_DEmRNA.csv",header=T,row.names = 1)
DEG_2<-final_DEmRNA %>% 
  rownames_to_column("genename") 
hubgene<-intersect(AS_gene$symbol,DEG_2$genename)
}

清洗数据-进一步探索

if(T){
require(dplyr)
## 提取已标准化的数据
mRNA_exp<-read.csv(file="F:/Bioinfor_project/Breast/AS_research/AS/result/TNBC_mRNA_exp_log.csv",header = T,row.names = 1)
load("F:/Bioinfor_project/Breast/TCGA/RNA-seq-model/BRCA_all.Rdata")
BRCA_all[1:5,1:5]
dim(BRCA_all)## 24491 1200
head(phe)
colnames(phe)

##
mRNA_exp[1:5,1:5]
dim(mRNA_exp)
data_exp<-mRNA_exp[hubgene,]
## 提取匹配的临床信息
data_phe<-phe %>%
  filter(ID %in% colnames(mRNA_exp))

## 合并临床信息与表达数据
data<-data_exp %>% t() %>% as.data.frame() %>% 
    ##行名变列名
    rownames_to_column(var = "ID") %>% 
    as_tibble() %>% 
    ## 合并临床信息与表达数据
    inner_join(data_phe,by="ID") %>% 
    ## 增加分组信息
    mutate(group=ifelse(substring(colnames(mRNA_exp),14,15)=="01","TNBC","Normal")) %>% 
    ## 分组提前
    dplyr::select(ID,group,everything())
group=factor(c(rep(1,115),rep(0,113)))
head(data)  
#save(data,file = "F:/Bioinfor_project/Breast/AS_research/AS/result/hubgene.Rdata")
}
## # A tibble: 6 x 22
##   ID    group CCL14  HBA1 CCL16 TUBB3 PAM50 Os_time OS_event RFS_time
##   <chr> <chr> <dbl> <dbl> <dbl> <dbl> <fct>   <int>    <int>    <int>
## 1 TCGA~ TNBC   3.37  0     0     5.94 Basal     967        1       NA
## 2 TCGA~ TNBC   4.97  3.39  0     6.00 Basal     584        0       NA
## 3 TCGA~ TNBC   4.77  0     0     5.04 Basal    2654        0       NA
## 4 TCGA~ TNBC   4.19  3.74  2.84  5.13 Basal     754        1       NA
## 5 TCGA~ TNBC   0     0     0     5.65 Basal    2048        0     2048
## 6 TCGA~ TNBC   5.34  0     4.07  6.04 Basal    1027        0     1027
## # ... with 12 more variables: RFS_event <int>, age <int>, ER <fct>,
## #   PR <fct>, gender <fct>, HER2 <fct>, Margin_status <fct>, Node <int>,
## #   M_stage <fct>, N_stage <fct>, T_stage <fct>, `Pathologic stage` <fct>

载入数据

数据清洗-gather-spread

load(file = "F:/Bioinfor_project/Breast/AS_research/AS/result/hubgene.Rdata")
head(data)
## # A tibble: 6 x 22
##   ID    group CCL14  HBA1 CCL16 TUBB3 PAM50 Os_time OS_event RFS_time
##   <chr> <chr> <dbl> <dbl> <dbl> <dbl> <fct>   <int>    <int>    <int>
## 1 TCGA~ TNBC   3.37  0     0     5.94 Basal     967        1       NA
## 2 TCGA~ TNBC   4.97  3.39  0     6.00 Basal     584        0       NA
## 3 TCGA~ TNBC   4.77  0     0     5.04 Basal    2654        0       NA
## 4 TCGA~ TNBC   4.19  3.74  2.84  5.13 Basal     754        1       NA
## 5 TCGA~ TNBC   0     0     0     5.65 Basal    2048        0     2048
## 6 TCGA~ TNBC   5.34  0     4.07  6.04 Basal    1027        0     1027
## # ... with 12 more variables: RFS_event <int>, age <int>, ER <fct>,
## #   PR <fct>, gender <fct>, HER2 <fct>, Margin_status <fct>, Node <int>,
## #   M_stage <fct>, N_stage <fct>, T_stage <fct>, `Pathologic stage` <fct>
require(cowplot)

调整清洗数据至想要的格式

require(tidyverse)
require(ggplot2)
require(ggsci)
## Loading required package: ggsci
mydata<-data %>% 
  ## 基因表达数据gather,gather的范围应调整
  gather(key="gene",value="Expression",CCL14:TUBB3) %>% 
  ##
  dplyr::select(ID,gene,Expression,everything()) 
head(mydata)  
## # A tibble: 6 x 20
##   ID    gene  Expression group PAM50 Os_time OS_event RFS_time RFS_event
##   <chr> <chr>      <dbl> <chr> <fct>   <int>    <int>    <int>     <int>
## 1 TCGA~ CCL14       3.37 TNBC  Basal     967        1       NA        NA
## 2 TCGA~ CCL14       4.97 TNBC  Basal     584        0       NA        NA
## 3 TCGA~ CCL14       4.77 TNBC  Basal    2654        0       NA        NA
## 4 TCGA~ CCL14       4.19 TNBC  Basal     754        1       NA        NA
## 5 TCGA~ CCL14       0    TNBC  Basal    2048        0     2048         0
## 6 TCGA~ CCL14       5.34 TNBC  Basal    1027        0     1027         0
## # ... with 11 more variables: age <int>, ER <fct>, PR <fct>, gender <fct>,
## #   HER2 <fct>, Margin_status <fct>, Node <int>, M_stage <fct>,
## #   N_stage <fct>, T_stage <fct>, `Pathologic stage` <fct>

绘制简单箱线图

P<-mydata %>% 
   ## 确定x,y
   ggplot(aes(x = gene, y = Expression, fill = group)) +
        geom_boxplot(alpha=0.7) +
        scale_y_continuous(name = "Expression")+
        scale_x_discrete(name = "Gene") +
        ggtitle("Boxplot of hub gene") +
        theme_bw() +
        theme(plot.title = element_text(size = 14, face =  "bold"),
              text = element_text(size = 12),
              axis.title = element_text(face="bold"),
              axis.text.x=element_text(size = 11)) 
P

image.png

ggsci调色

调用scale_fill_lancet,调色lancet配色

p2<-P+scale_fill_lancet()
p2
#ggsave(p2,filename = "hub_gene_boxplot.pdf",width = 5,height = 5)

image.png

分面图形

facet_wrap()

P<-mydata %>% 
   ## 确定x,y
   ggplot(aes(x = group, y = Expression, fill = group)) +
        geom_boxplot(alpha=0.7) +
        scale_y_continuous(name = "Expression")+
        scale_x_discrete(name = "group") +
        ggtitle("Boxplot of hub gene") +
        theme_bw() +
        theme(plot.title = element_text(size = 14, face =  "bold"),
              text = element_text(size = 12),
              axis.title = element_text(face="bold"),
              axis.text.x=element_text(size = 11)) 
P

image.png

p3<-P+scale_fill_lancet()+facet_wrap(~gene)
p3
#ggsave(p3,filename = "hub_gene_boxplot_facet.pdf",width = 5,height = 5)

image.png

加入其它变量并分面-PAM50

p<-mydata %>% 
  ## 筛选数据,选定x,y
  filter(group=="TNBC" & PAM50!="NA") %>% 
  ggplot(aes(x = PAM50, y = Expression, fill = PAM50)) +
        geom_boxplot(alpha=0.7) +
        scale_y_continuous(name = "Expression")+
        scale_x_discrete(name = "PAM50") +
        ggtitle("Boxplot of hub gene") +
        theme_bw() +
        theme(plot.title = element_text(size = 14, face =  "bold"),
              text = element_text(size = 12),
              axis.title = element_text(face="bold"),
              axis.text.x=element_text(size = 11)) 
p+scale_fill_lancet()+
  facet_wrap(~gene)##分面变量

image.png

for循环实现批量绘图

  • for循环:命名空对象list 配合do.call函数

library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(ggplot2)
p <- list()
genename<-hubgene
for (j in genename) {
  p[[j]] <- ggplot(data=data, aes_string(x=group, y=j)) + 
            geom_boxplot(alpha=0.7,aes(fill=group)) +
            scale_y_continuous(name = "Expression")+
            scale_x_discrete(name = j) +    
            ggtitle(paste0("boxlot of ",j) ) +##ggtitle指定
            theme_bw() +
            theme(plot.title = element_text(size = 14, face =  "bold"),
            text = element_text(size = 12),
            axis.title = element_text(face="bold"),
            axis.text.x=element_text(size = 11))+
            scale_fill_lancet()
  #ggsave(sprintf("boxplot%s.pdf",j),width=5,height=5,onefile=T)
}
do.call(grid.arrange, c(p, ncol=2))

image.png
(0)

相关推荐

  • ggplot2实现分半小提琴图绘制基因表达谱和免疫得分

    最近看到很多人问下面这个图怎么绘制,看着确实不错.于是我查了一些资料,这个图叫split violin或者half violin,本质上是一种小提琴图.参考代码在https://gist.github ...

  • ggplot2绘图学习 径向柱形图

    径向柱形图也被称为圆形柱形图或星图.这种图表使用同心圆网格来绘制条形图 每个圆圈表示一个数值刻度,而径向分隔线(从中心延伸出来的线)则用作区分不同类别或间隔(如果是直方图).刻度上较低的数值通常由中心 ...

  • R ggplot和ggsignif箱线图添加显著性差异标识

    22019.03.07 11:33:11 具有显著性标注的箱线图 有时候我们会看到如上图片,觉得挺好,但是如何实现呢?没有做的的时候,觉得挺难,但是真要做才发现没有那么困难? 其实做这样的图,目前R比 ...

  • SNV突变(96种)频谱的制作

    昨天我们学习了正常情况下,6种SNV(C>A, C>G, C>T, T>A, T>C, T>G)突变频谱的制作,但是如果考虑到突变的上下文,就可以变成96种(如下图 ...

  • 技术贴 | R语言:线性回归、geom_text添加回归方程

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛.回 ...

  • 跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

    简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表.KM生存曲线.森林图.ROC曲线等.每天一篇精彩R语言推文教程,手把手带你入门R语言绘图. 今天推文 ...

  • 技术贴 | R语言ggplot2给箱图添加散点和连线

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在R中ggplot是一个非常灵活的绘图函数.ggplot2加geom_boxplot()可以绘制箱图,通过geom_ ...

  • r语言ggplot2误差棒图快速指南

    原文链接:http://tecdat.cn/?p=5506 给直方图和线图添加误差棒 准备数据 这里使用ToothGrowth 数据集. library(ggplot2)  df <- Toot ...

  • 手把手教你使用R语言绘制交互效应的森林图

    交互效应分析在SCI中是一个重要的组成,可以表示特殊的人群(也就是亚组)中自变量和因变量的结果关系,可以说是高分SCI必做的项目,在SCI中,这一部分结果很多都是以森林图来展示,这样结果又直观有方便分 ...

  • 技术贴 | R语言pheatmap聚类分析和热图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和clus ...

  • 教你用R语言ggplot2包作出期刊编辑都想学的SCI级插图

    插图是SCI论文中必不可少的一部分.一张精美的插图,不仅能够直观的反映出文章的主要结果,而且能够牢牢的抓住期刊编辑和审稿人的眼球.既然插图那么重要,那如何才能绘制出令人赏心悦目的图呢? 解螺旋给大家带 ...

  • R语言 | forestplot包绘制森林图

    天道昭然12020.04.18 18:28:11字数 1,383阅读 16,602原文:R语言 | forestplot包绘制森林图在Meta分析中森林图比较常见,但其实掌握了用R语言中的forest ...

  • R语言ggplot2去掉图形和坐标轴间隙

    ggplot2默认主题图形和坐标轴间会有间隙,看起来会不舒服. scale_y_continuous(expand = c(0,0))//这个可以去掉与X轴间隙scale_x_continuous(e ...