Ruizheng 的学习笔记
感谢 生信技能树 小洁老师
常见报错:找不到文件
- 文件没有存放于工作目录下(Rprojecct)
- 拼写错误 (用tab自动补齐)
文件读入的练习
- 注意不要惹上因子 options(stringsAsFactors = F)
- 参数 check.names = F 能避免让函数自动检查并改变你的文本 eg.如果不加这个参数,列名的 "-" 会变成“.”
- 参数 comment.char = "!" 能让函数在读取文件时将以"!"开头的行视为注释,从而在读入R时忽略这些行
- 参数 fill = TRUE,能够在读入时自动补齐,避免出现某一个观察的变量不足而无法读入,但是在读入后应检查你的数据框
- 参数 skip = 65,能够在读入自动跳过前65行
下面是讲课的知识点,相应的代码和练习题
#1.读取ex1.txt
ex1 = read.table("ex1.txt")
#2.读取ex2_B cell receptor signaling pathway.csv
ex2 = read.csv("ex2_B cell receptor signaling pathway.csv",
row.names = 1, check.names = F)
#3.读取GSE32575_series_matrix.txt,赋值给gse。
gse = read.table("GSE32575_series_matrix.txt",
comment.char = "!",
header = T,
row.names = 1)
#4.描述gse的属性
dim(gse)
colnames(gse)
rownames(gse)
#5.将gse导出为新的txt和csv文件。
write.table(gse, file = "zz.txt")
write.csv(gse,"zz.csv")
#6.将gse保存为Rdata并加载。
save(gse, ex1, ex2, file = "zz.Rdata")
#7. 加载 zz.Rdata 并查看有几个数据
(load("zz.Rdata"))
#练习:
#1.读取complete_set.txt(已保存在工作目录)
a <- read.table("complete_set.txt", header = T)
# 2.查看有多少行、多少列
dim(a)
# 3.获取行名和列名
rownames(a); colnames(a)
# 4.导出为csv格式
write.csv(a, file = "xx.csv")
# 5.保存为Rdata
save(a, file = "xx.Rdata")
# 6.加载class.Rdata,查看数据类型
(load("class.Rdata"))
class(y)
高阶数据读取指南
R语言能读取的文件格式
R语言能读取的文件格式
用于读取/导出文件的R包
用于读取/导出文件的R包
图就是数据,数据就是图
常见可视化R包
1. 作图
- base
- ggplot2
- ggpubr
2. 拼图
- par里的mfrow
- grid.arrange
- cowplot
- customLayout
-
patchwork
盘点R语言的那些拼图方法
3. 导出 - pdf()等三段论
- ggsave
- export > graph2ppt
基础包作图函数
plot(iris[,1],iris[,3],col = iris[,5])
text(6.5,4, labels = 'hello')
boxplot(iris[,1]~iris[,5])
dev.off()
ggplot2 语法
- 入门级绘图模板
- 映射-颜色、大小、透明度、形状
- 分面
- 几何对象
- 统计变换
- 位置调整
- 坐标系
1. 入门级模版
ggplot(data = <DATA>)+
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
ggplot(data = iris)+
geom_point(mapping = aes(x = Sepal.Length,
y = Petal.Length))
2. 映射
映射
ggplot(data = iris)+
geom_point(mapping = aes(x = Sepal.Length,
y = Petal.Length,
color = Species))
手动设置
手动设置
手动设置放到 aes 外面
ggplot(data = mpg) +
geom_point(mapping = aes( x= displ, y= hwy), color = "blue")
3. 分面
把一张图变成多个子图
ggplot(data = iris) +
geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +
facet_wrap(~ Species)
3. 双分面
test = iris
test$Group = sample(letters[1:5],150,replace = T)
ggplot(data = test) +
geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +
facet_grid(Group ~ Species)
练习题
#练习6-1
# 示例数据:ggplot2中数据集mpg
# 1.分别以mpg的displ和hwy两列作为横纵坐标,画点图。
ggplot(mpg) +
geom_point(aes(x = displ, y = hwy))
# 2.尝试修改颜色或大小,从mpg数据框中任选可以用来分类的列。
ggplot(mpg) +
geom_point(aes(x = displ, y = hwy, size = cyl, color = drv))
# 3.根据class列来分面
ggplot(mpg) +
geom_point(aes(x = displ, y = hwy)) +
facet_wrap(~ class, nrow = 2)
# 4.根据drv和cyl两个变量来分面
ggplot(mpg)+
geom_point(aes(x= displ, y = hwy))+
facet_grid(drv~cyl)
4. 几何对象
几何对象
理解分组
ggplot(data = test) +
geom_smooth(mapping = aes(x = Sepal.Length,
y = Petal.Length))
ggplot(data = test) +
geom_smooth(mapping = aes(x = Sepal.Length,
y = Petal.Length,
group = Species))
ggplot(data = test) +
geom_smooth(mapping = aes(x = Sepal.Length,
y = Petal.Length,
color = Species)) ### 会画出三条线
几何对象可以叠加
- 图层
-
局部映射和全局映射
局部映射仅对当前图层有效,全局映射对所有图层有效
图层:geom_xx()画出的单个几何对象
ggplot(data = test) +
geom_smooth(mapping = aes(x = Sepal.Length,
y = Petal.Length))+
geom_point(mapping = aes(x = Sepal.Length,
y = Petal.Length))
ggplot(data = test,mapping = aes(x = Sepal.Length, y = Petal.Length))+
geom_smooth()+
geom_point()
练习题
# 1.尝试写出下图的代码
# 数据是iris
# X轴是Species
# y轴是Sepal.Width
# 图是箱线图
ggplot(iris)+
geom_boxplot(aes(x= Species,y = Sepal.Width))
# 2. 尝试在此图上叠加点图,
# 能发现什么问题?
ggplot(iris,aes(x= Species,y = Sepal.Width, color = Species))+
geom_boxplot()+
geom_point()
# 3.用下列代码作图,观察结果
ggplot(test,aes(x = Sepal.Length,y = Petal.Length,color = Species)) +
geom_point()+
geom_smooth(color = "black")
练习题反馈出来的问题
- 当局部映射和全局映射冲突,以局部映射为准
- 图层叠加与覆盖的问题
- 点图重叠的问题