2022.4.4
我认为这是第一篇,后面会持续更新自己阅读新图的笔记和自己的练习尝试。。。

基础知识

这里会一ggplot2()为核心来记录

基础包

  1. 作图 base() ggplot2() ggpubr()

    1. 拼图:patchwork() ——只能拼ggplot()的图<br /> 导出:ggsave()
  2. 低级绘图函数寄生于高级绘图函数image.png

    针对于ggplot2() 就语法,有以下知识点:

  3. 入门级绘图模版

image.png 特殊语法:列名不带引号

  1. 属性设置
  1. ##大小:单位mm 形状:0-24编号 颜色:字符串,需要加引号 alpha透明度 fill填充颜色
  2. ##手动设置与数据无关
  3. ggplot(data = iris) +
  4. geom_point(mapping = aes(x = Sepal.Length,
  5. y = Petal.Length),
  6. color = "blue")
  7. ggplot(data = iris) +
  8. geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length),
  9. size = 5, # 点的大小5mm
  10. alpha = 0.5, # 透明度 50%
  11. shape = 8) # 点的形状
  1. ggplot(data = iris)+
  2. geom_point(mapping = aes(x = Sepal.Length,
  3. y = Petal.Length,
  4. color = Species))
  5. ##这里需要注意的是,可以自行指定映射的颜色
  6. ggplot(data = iris)+
  7. geom_point(mapping = aes(x = Sepal.Length,
  8. y = Petal.Length,
  9. color = Species))+
  10. scale_color_manual(values = c("blue","grey","red"))
  11. #这里指的注意的是颜色可以有十六进制代码来选择,其次还有专门的配色包来帮助配色

映射的aes的参数是列名,手动设置中是具体的颜色,后者与数据本身内容无关

  1. 分面

    1. #分面
    2. ggplot(data = iris) +
    3. geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +
    4. facet_wrap(~ Species)
    5. #双分面
    6. dat = iris
    7. dat$Group = sample(letters[1:5],150,replace = T)
    8. ggplot(data = dat) +
    9. geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +
    10. facet_grid(Group ~ Species) #Group为行名,Species为列,当然忘记了试运行一下就知道了
  2. 几何对象 全局和局部

image.png

  1. 统计变换(这一部分我没怎么理解出具体区别,所以。。。把代码功能弄明白先争取做到会用吧!!) ```r ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut))

ggplot(data = diamonds) + stat_count(mapping = aes(x = cut))

我感觉这里是记数

  1. 这里有两个参考应用场景,帮助理解吧! 虽然我感觉就是做了直方图😂,不过算是横纵坐标只有一个吧。<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%**
  2. 6. 位置关系:多个图重叠的话,谁在最后,谁在最上面
  3. 散点图geom_jitter()散点散开,而非geom_point是垂直一条线的分布<br />直方图的堆叠和并列
  4. ```r
  5. # 6.2堆叠直方图
  6. ggplot(data = diamonds) +
  7. geom_bar(mapping = aes(x = cut,fill=clarity))
  8. # 6.3 并列直方图
  9. ggplot(data = diamonds) +
  10. geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

image.pngimage.png
翻转坐标系和极坐标系

  1. bar <- ggplot(data = diamonds) +
  2. geom_bar(
  3. mapping = aes(x = cut, fill = cut),
  4. width = 1
  5. ) +
  6. theme(aspect.ratio = 1) +
  7. labs(x = NULL, y = NULL)
  8. bar
  9. bar + coord_flip()
  10. bar + coord_polar()

image.png
image.pngimage.png

ggpubr()

更易理解的代码语言

  1. # ggpubr 搜代码直接用,基本不需要系统学习
  2. # sthda上有大量ggpubr出的图
  3. library(ggpubr)
  4. ggscatter(iris,x="Sepal.Length",
  5. y="Petal.Length",
  6. color="Species")
  7. p <- ggboxplot(iris, x = "Species",
  8. y = "Sepal.Length",
  9. color = "Species",
  10. shape = "Species",
  11. add = "jitter")
  12. p
  13. my_comparisons <- list( c("setosa", "versicolor"),
  14. c("setosa", "virginica"),
  15. c("versicolor", "virginica") )
  16. p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value
  17. stat_compare_means(label.y = 9)
  18. ##这里最后形成的列表对比 值得参考
  19. ##还有这里的列名加引号了/笑死

image.png更多美图…

图片保存和导出

image.pngimage.png之后再右键组合——取消组合
#https://mp.weixin.qq.com/s/p7LLLvzR5LPgHhuRGhYQBQ
Patchwork!!!

补充参考点

  1. ggplot()和ggpubr() 二者参考对比image.png
  2. color和fill的区别

1)空心和实心的形状点图,都用color来设置
2)既有边框和内心的,才需要color和fill两个参数 (fill管内心,color管边框) 比如说
image.png

  1. sample() 随机抽样函数 dat$Group = sample(letters[1:5],150,replace = T)

letter是R内置的数据集,英文字母,replace意思为抽后放回去,不然就只能抽五次

  1. 代码中“+” 在画同一张图时连接多段代码,只属于ggplot2()

左侧的“+”代表代码的延续

  1. them_bw() them_classic()去背景
  2. dev.off() 的重要性

最后想多说几句,老师上课教的是基础、概念,起码让我们有了看懂别人画的图能力,但是如何自己绘图,可能先回把自己的数据套老师的代码,然后看懂代码后。去看看新的不一样的别人的绘图,再看代码,学着整理后是自己的。。可能对我这样的初学者来说还很漫长,以及会遇到很多的难以想象的问题吧(包括今天搜了一下发现一个人ggplot2绘图顺序错误都出现了问题),不过总得试一试,迈出第一步嘛。所以,写在这里,就是督促逼自己一把,就是自己还在学的话,就去学!(后面想试着开一个R语言绘图学习的新的学习库,这里先自己给自己埋个坑吧!!)

截图与代码来源于生信技能树全程班中R基础班课程PPT