为什么选择R语言

R语言的主要功能

  • 1 数据处理

各种各样的统计 模型等

  • 2 数据可视化

将数据用图的形式展示出来,更直观更吸引人。散点图 折线图 柱形图等 ggplot2

功能强大 ,基本上我们想到的统计分析方法 和做图方法 都能够实现;还有一个优势是能够记录从原始数据到最终结果的一个过程

关于初学R语言的一个小建议

明确一个想法 R语言不难,不要把他当成编程语言来学,他就是一个普通的数据处理软件,如果需求是满足科研数据处理和数据可视化,完全不需要动脑筋,就是多用;熟悉就好。

R语言和Rstudio的安装

开源软件,直接到官网下载安装包安装即可

关于安装的小建议

  • 1 R语言不要安装最新版,可以安装比最新版稍微第一个版本的R,比如现在R应该是到4.2了,我们可以安装4.1版本的R,Rstudio无所谓,直接安装最新版就可以

  • 2 如果自己电脑上的用户名是中文,可以先在电脑上增加一个用户,在新用户下安装R

4个基本概念

R包 package

可以理解为手机的app,安装好R语言就相当于是买了一台新手机

R包的安装方式

  • 1 install.package("packagename") 大部分R包都是这种 可以理解为去应用商店安装 (最常用)

  • 2 devtools::install_github("username/packagename")

  • 3 BiocManager::install('packagename')

  • 4 本地安装

函数

告诉计算机你要干什么的语句(计算机能够理解的语言):比如告诉计算机求和 sum() 求平均mean()

x1<-c(1,2,3,4,5)
sum(x=x1)
## [1] 15
mean(x=x1)
## [1] 3

和数学上函数的概念有些不一样

函数都是来自于R包,要使用函数首先要知道这个函数来源于哪个R包,加载这个R包才能够用这个函数

有些函数可以直接使用是因为R语言启动以后会默认加载一些R包

参数

函数里调节细节的命令

函数是告诉计算机干什么 参数就是告诉计算机细节怎么干

比如可以告诉计算机 吃饭() 吃饭就是一个函数

计算机这个时候可能默认去用手抓一个包子吃,接下来可以告诉他

吃饭(工具=“筷子”,吃什么=“米饭”)

文件存储路径

数据文件在电脑上存储的位置

"D:/R_4_1_0_working_directory/env001/abc.txt"

作图前的数据准备

用excel存储数据

读取excel数据用readxl这个R包,不是R语言自带,需要安装

install.packages("readxl")

最基本的数据格式需要一列x和一列y

行是样本 列是变量

数据分为两种类型

  • 1 数值

数值可以相加减 做数学运算

  • 2 文本

文本不能做数学运算,默认按照首字母排序

ggplot2作图

ggplot2也不是R语言自带的R包,第一次使用需要安装 install.packages("ggplot2")

以散点图为例介绍ggplot2的基本套路

  • 第一步是读取数据,将数据整理到excel中

library(readxl)
dat01<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example01.xlsx")
dat01
## # A tibble: 4 x 2
##    var1  var2
##   <dbl> <dbl>
## 1     1     2
## 2     2     2
## 3     3     3
## 4     4     3
  • 第二步是作图

固定套路是 第一行代码指定数据集ggplot(data=dat01,aes(x=var1,y=var2)),第二行代叠加要做什么图的函数

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.5
ggplot(data=dat01,aes(x=var1,y=var2))+
  geom_point()

初步的图就做好了,接下来就是调整细节

  • 第三步是美化

坐标轴以内的区域 通常直接在作图函数里更改,比如散点图的点 可以更改大小 颜色 形状等等

library(ggplot2)

ggplot(data=dat01,aes(x=var1,y=var2))+
  geom_point(color="red",size=10,shape=17)

以上是对所有的点进行统一更改,在参数=后 加具体的参数值

如果数据集有分组,需要现在数据集中增加一列分组信息

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)

这个时候需要把参数写到aes()里面,参数值跟的是数据集里的列名

默认的会根据分组生成配色和形状,如果觉得不好看可以手动更改,需要用到scale_系列函数

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)+
  scale_color_manual(values = c("ctl"="red","trt"="blue"))+
  scale_shape_manual(values = c("ctl"=15,"trt"=18))

接下来是调整坐标轴,还是scale_系列函数,分x,y,分离散discrete和连续continues 坐标轴主要是截断 范围 文本标签

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)+
  scale_color_manual(values = c("ctl"="red","trt"="blue"))+
  scale_shape_manual(values = c("ctl"=15,"trt"=18))+
  scale_x_continuous(breaks = c(1.5,2.5,3.5),
                     labels = c("A","B","C"),
                     limits = c(0,5))

接下来是调整坐标轴的标题

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)+
  scale_color_manual(values = c("ctl"="red","trt"="blue"))+
  scale_shape_manual(values = c("ctl"=15,"trt"=18))+
  scale_x_continuous(breaks = c(1.5,2.5,3.5),
                     labels = c("A","B","C"),
                     limits = c(0,5))+
  labs(x="AXIS x",y="AXIS y",title="TITLE",caption = "XiaoMing")

接下来是调整主题,主题主要是 字体 对齐方式之类的

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)+
  scale_color_manual(values = c("ctl"="red","trt"="blue"))+
  scale_shape_manual(values = c("ctl"=15,"trt"=18))+
  scale_x_continuous(breaks = c(1.5,2.5,3.5),
                     labels = c("A","B","C"),
                     limits = c(0,5))+
  labs(x="AXIS x",y="AXIS y",title="TITLE",caption = "XiaoMing")+
  theme(text = element_text(family = "serif"),
        plot.title = element_text(hjust=0.5),
        legend.position = "bottom")

基本上整个图里能想到的地方都有对应的代码可以修改,如果实在想不起来如何用代码来修改的话,我们还可以把图导出到ppt里,每个元素都可以编辑,这里需要借助一个R包export https://github.com/tomwenseleers/export

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)+
  scale_color_manual(values = c("ctl"="red","trt"="blue"))+
  scale_shape_manual(values = c("ctl"=15,"trt"=18))+
  scale_x_continuous(breaks = c(1.5,2.5,3.5),
                     labels = c("A","B","C"),
                     limits = c(0,5))+
  scale_y_continuous(limits=c(1,5))+
  labs(x="AXIS x",y="AXIS y",title="TITLE",caption = "XiaoMing")+
  theme_bw()+
  theme(text = element_text(family = "serif",size = 5),
        plot.title = element_text(hjust=0.5),
        legend.position = "bottom") -> p
print(p)

export::graph2office(p,file = "rplot",type = "PPT",
                     width = 5,
                     height = 5)
## Exported graph as rplot.pptx
export::graph2office(p,file = "rplot01",type = "DOC",
                     width = 5,
                     height = 5)
## Exported graph as rplot01.docx

论文中有时候可能会一个主图,分别由很多个子图组合,R语言里也提供了很方便的组合图的函数,如果都是用ggplot2做的图,可以使用专门拼图的R包patchwork,这个也不是R语言自带的R包,第一次使用需要先安装 install.packages("patchwork")

library(readxl)
dat02<-read_excel("D:/R_4_1_0_working_directory/env001/Rpub/20220617/data/example02.xlsx")
dat02
## # A tibble: 4 x 3
##    var1  var2 group
##   <dbl> <dbl> <chr>
## 1     1     2 ctl  
## 2     2     2 ctl  
## 3     3     3 trt  
## 4     4     3 trt
library(ggplot2)
ggplot(data=dat02,aes(x=var1,y=var2))+
  geom_point(aes(color=group,shape=group),size=10)+
  scale_color_manual(values = c("ctl"="red","trt"="blue"))+
  scale_shape_manual(values = c("ctl"=15,"trt"=18))+
  scale_x_continuous(breaks = c(1.5,2.5,3.5),
                     labels = c("A","B","C"),
                     limits = c(0,5))+
  scale_y_continuous(limits=c(1,5))+
  labs(x="AXIS x",y="AXIS y",title="TITLE",caption = "XiaoMing") -> p1

p1 +
  theme_bw() +
  theme(text = element_text(family = "serif",size = 5),
        plot.title = element_text(hjust=0.5),
        legend.position = "bottom") -> p2

print(p1)

print(p2)

library(patchwork)

p1 + p2

p1 + p2 +
  plot_annotation(tag_levels = "A")+
  plot_layout(guides = "collect")

公众号

小明的数据分析笔记本

公众号分享的内容包括1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关的转录组、基因组学文献阅读笔记;3、生物信息学入门相关知识,包括转录组学、群体基因组学等。4、目前也在学习宏基因组的相关知识,偶尔会推一些宏基因组的相关内容