2022.4.4
我认为这是第一篇,后面会持续更新自己阅读新图的笔记和自己的练习尝试。。。
基础知识
基础包
作图 base() ggplot2() ggpubr()
拼图:patchwork() ——只能拼ggplot()的图<br /> 导出:ggsave()
-
针对于ggplot2() 就语法,有以下知识点:
入门级绘图模版
特殊语法:列名不带引号
- 属性设置
##大小:单位mm 形状:0-24编号 颜色:字符串,需要加引号 alpha透明度 fill填充颜色
##手动设置与数据无关
ggplot(data = iris) +
geom_point(mapping = aes(x = Sepal.Length,
y = Petal.Length),
color = "blue")
ggplot(data = iris) +
geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length),
size = 5, # 点的大小5mm
alpha = 0.5, # 透明度 50%
shape = 8) # 点的形状
ggplot(data = iris)+
geom_point(mapping = aes(x = Sepal.Length,
y = Petal.Length,
color = Species))
##这里需要注意的是,可以自行指定映射的颜色
ggplot(data = iris)+
geom_point(mapping = aes(x = Sepal.Length,
y = Petal.Length,
color = Species))+
scale_color_manual(values = c("blue","grey","red"))
#这里指的注意的是颜色可以有十六进制代码来选择,其次还有专门的配色包来帮助配色
映射的aes的参数是列名,手动设置中是具体的颜色,后者与数据本身内容无关
分面
#分面
ggplot(data = iris) +
geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +
facet_wrap(~ Species)
#双分面
dat = iris
dat$Group = sample(letters[1:5],150,replace = T)
ggplot(data = dat) +
geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +
facet_grid(Group ~ Species) #Group为行名,Species为列,当然忘记了试运行一下就知道了
几何对象 全局和局部
- 统计变换(这一部分我没怎么理解出具体区别,所以。。。把代码功能弄明白先争取做到会用吧!!) ```r ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut))
ggplot(data = diamonds) + stat_count(mapping = aes(x = cut))
我感觉这里是记数
这里有两个参考应用场景,帮助理解吧! 虽然我感觉就是做了直方图😂,不过算是横纵坐标只有一个吧。<br />**但是这两个指标记得就行**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1649223221861-79b1c851-b0d1-4bd7-bb96-9e57f2285b5e.png#clientId=u78d50bec-1ac4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=167&id=u8df893d4&margin=%5Bobject%20Object%5D&name=image.png&originHeight=908&originWidth=1878&originalType=binary&ratio=1&rotation=0&showTitle=false&size=1175541&status=done&style=none&taskId=ud02f704e-a86f-4681-a63a-a988c08abb6&title=&width=345)![image.png](https://cdn.nlark.com/yuque/0/2022/png/27187179/1649223234363-9e38f7e1-26f7-41fa-b89e-1729e49f3c1e.png#clientId=u78d50bec-1ac4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=178&id=uf9d2e6d4&margin=%5Bobject%20Object%5D&name=image.png&originHeight=958&originWidth=1766&originalType=binary&ratio=1&rotation=0&showTitle=false&size=981365&status=done&style=none&taskId=u5db037ab-1d15-4445-a0e2-1a1f4d0a337&title=&width=328) **这里group = 1,不加的话,每个珠子都是自己的100%**
6. 位置关系:多个图重叠的话,谁在最后,谁在最上面
散点图geom_jitter()散点散开,而非geom_point是垂直一条线的分布<br />直方图的堆叠和并列
```r
# 6.2堆叠直方图
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut,fill=clarity))
# 6.3 并列直方图
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
翻转坐标系和极坐标系
bar <- ggplot(data = diamonds) +
geom_bar(
mapping = aes(x = cut, fill = cut),
width = 1
) +
theme(aspect.ratio = 1) +
labs(x = NULL, y = NULL)
bar
bar + coord_flip()
bar + coord_polar()
ggpubr()
更易理解的代码语言
# ggpubr 搜代码直接用,基本不需要系统学习
# sthda上有大量ggpubr出的图
library(ggpubr)
ggscatter(iris,x="Sepal.Length",
y="Petal.Length",
color="Species")
p <- ggboxplot(iris, x = "Species",
y = "Sepal.Length",
color = "Species",
shape = "Species",
add = "jitter")
p
my_comparisons <- list( c("setosa", "versicolor"),
c("setosa", "virginica"),
c("versicolor", "virginica") )
p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value
stat_compare_means(label.y = 9)
##这里最后形成的列表对比 值得参考
##还有这里的列名加引号了/笑死
图片保存和导出
之后再右键组合——取消组合
#https://mp.weixin.qq.com/s/p7LLLvzR5LPgHhuRGhYQBQ
Patchwork!!!
补充参考点
- ggplot()和ggpubr() 二者参考对比
- color和fill的区别
1)空心和实心的形状点图,都用color来设置
2)既有边框和内心的,才需要color和fill两个参数 (fill管内心,color管边框) 比如说
- sample() 随机抽样函数 dat$Group = sample(letters[1:5],150,replace = T)
letter是R内置的数据集,英文字母,replace意思为抽后放回去,不然就只能抽五次
- 代码中“+” 在画同一张图时连接多段代码,只属于ggplot2()
左侧的“+”代表代码的延续
- them_bw() them_classic()去背景
- dev.off() 的重要性
最后想多说几句,老师上课教的是基础、概念,起码让我们有了看懂别人画的图能力,但是如何自己绘图,可能先回把自己的数据套老师的代码,然后看懂代码后。去看看新的不一样的别人的绘图,再看代码,学着整理后是自己的。。可能对我这样的初学者来说还很漫长,以及会遇到很多的难以想象的问题吧(包括今天搜了一下发现一个人ggplot2绘图顺序错误都出现了问题),不过总得试一试,迈出第一步嘛。所以,写在这里,就是督促逼自己一把,就是自己还在学的话,就去学!(后面想试着开一个R语言绘图学习的新的学习库,这里先自己给自己埋个坑吧!!)
截图与代码来源于生信技能树全程班中R基础班课程PPT