Advertisement

(生物信息学)R语言绘图初-中-高级——3-10分文章必备——区组条形图(初级)

阅读量:

在发表一篇生物信息学文章时,除了要注重研究思路和关注的热点领域外,在视觉呈现方面同样不容忽视的是图表质量的精良程度。本专栏系统性地整理了从R语言绘图入门到进阶技巧——针对3-10分段落的关键图表展示需求而设计——并重点归纳了3-10分段落中常见出现的各类图表类型及其绘制要点。通过深入分析多篇经典文献中的代表性图表案例,并附上了实现这些图表所需的完整R语言代码和图像解读指南。

本专栏将向大家介绍的图片绘制如下:

1. 散点图

2. 箱线图

3.条形图

4.正负条形图

5.区组条形图

6.小提琴图

7.热图

8.Venn图

9.生存曲线

10.森林图

11.TSNE

12.瀑布图

13.ROC曲线

14.点阵图

15.相关系数图

16.饼图

17.树形图

18.气泡图

19.火山图

20.点图

上次绘制了正负条形图:

生物信息学:R语言绘图入门——必修技能:正负条形图

属于生物信息学领域的一篇基础阶段的文章,在博客上获得了较高的评分(3-5分),堪称核心技能的学习指南——个人教学博客

该文深入探讨了如何利用R语言绘制正负条形图,并结合实际案例进行详细分析

下面绘制区组条形图:

比如我们有这样的数据:

通过聚类分析的方法, 我们将样本划分为两个子集, 以研究性别在两个子集中的比例分布情况. 此时可以通过分组条形图来展示结果.

首先读取数据,先看一下数量分布:

复制代码
 setwd("C:\ Users\ ASUS\ Desktop\ tmp")

    
 dir()
    
 cluster <- read.csv("Cluster.csv",header = T,sep = ",")
    
 head(cluster)
    
 data <- as.data.frame(cluster)
    
 head(data)
    
 a <- table(data$Cluster,data$Gender)
    
 a
    
  
    
  
    
 # > a
    
 #           
    
 #            FEMALE MALE
    
 #  Cluster 1     50  150
    
 #  Cluster 2     27   61
    
    
    
    
    AI助手

然后我们要将数量分布变成比例分布:

复制代码
 a <- as.data.frame(a)

    
 a
    
 class(a)
    
 a
    
 names(a)
    
 names(a) <- c("Cluster","Gender","Number")
    
 a
    
 library(plyr)
    
 a
    
 ce <- ddply(a,"Cluster",transform,per = Number/sum(Number)*100)####### a 为输入的数据框;“Cluster” 表示以其为切割变量;transform 转变;后面接公式;输出还是data.frame
    
 ce
    
  
    
 # > ce
    
 #    Cluster Gender Number      per
    
 #1 Cluster 1 FEMALE     50 25.00000
    
 #2 Cluster 1   MALE    150 75.00000
    
 #3 Cluster 2 FEMALE     27 30.68182
    
 #4 Cluster 2   MALE     61 69.31818
    
    
    
    
    AI助手

下面计算一下比例分布的P值,使用卡方检验:

复制代码
 library(reshape2)

    
 ce
    
 zz <- dcast(ce[,c(1,2,4)],ce$Cluster~ce$Gender)
    
 zz
    
 class(zz)
    
 rownames(zz) <- zz$`ce$Cluster1`
    
 zz
    
 zz <- zz[,-1]
    
 zz
    
 chisq.test(zz)
    
  
    
 # > chisq.test(zz)
    
 #
    
 #	Pearson's Chi-squared test with Yates' continuity correction
    
 #
    
 #data:  zz
    
 #X-squared = 0.54554, df = 1, p-value = 0.4601
    
    
    
    
    AI助手

可以看到P值无意义,那我们后续作图时,P值得写成NS

复制代码
 library(ggplot2)

    
 names(ce)[1]
    
  
    
 a <- ggplot(ce,aes(x=Cluster,y=per,
    
                fill = Gender))+geom_bar(stat = "identity",
    
                                        colour = "black")
    
 a
    
 b <- a+scale_fill_manual(values = c("#0176bd","#bc1e5d", "#e8bb20","orangered"))+
    
   theme_classic()
    
 b
    
 c <- b+xlab("")
    
 c
    
 d <- c+ylab("Percentage (%)")+
    
   labs(title = "NS")
    
  
    
 d
    
 e <- d+  theme(axis.title.x.bottom = element_text(size = 12),
    
            axis.text.x.bottom = element_text(size = 10,colour = "black"))
    
 e
    
 f <- e+theme(axis.title.y.left = element_text(size = 12),
    
          axis.text.y.left = element_text(size = 10,colour = "black"),
    
          legend.title = element_text(size = 10,colour = "black"),
    
          legend.text = element_text(size = 10,colour = "black"),
    
          title = element_text(size = 16,colour = "black",hjust = 0.5,vjust = 0.5),
    
          plot.title = element_text(size = 16,vjust = 0.5,hjust = 0.5,colour = "black"))+
    
   scale_x_discrete(limits = c("Cluster 1","Cluster 2"))
    
 f
    
    
    
    
    AI助手

图形如下:

导出成PDF即可。

全部评论 (0)

还没有任何评论哟~