几何对象
几何对象可以叠加:一个geom函数画出来的所有东西称为一个几何对象(高级绘图函数加一低级绘图函数
位置
geom_jitter()
geom_point(position = "jitter")
主题
theme_bw() 改主题,可以去掉灰色格子
数据多的东西一般gpt写的都比较好,ggplot2的函数一般不会写错,单手molecule3写的人比较少就不太好
ggpubr
stat_compare_means(comparisions = my_comparisons,
1️⃣必须是列表2️⃣组成成分必须为长度为2的向量3️⃣vector的每一个元素必须是横坐标
拼图
R包patchwork
语法非常简单
直接p1+p2 拼图
给子图添加标记
可以统一修改所有子图
可以将子图的legend移动到一起,整体性很好
有的时候代码能用但是画不出来图?
图版被占用了
dev.off()清除画板重新来
函数就是要从里面帮助文档学习
STHDA 网站
ggplot2画图50个案例 top50ggplot2.html
画图代码+你的数据+你解决问题的能力=你的图
画图的正确思维
- 我的数据适合用什么图展示?
- 这个图是什么图?
- 搜画图代码:代码可复制、图片美观;提供了代码配套的示例数据;示例代码+示例数据(代码跑得通)
- 仿制示例数据:有了一个能跑得通数据的代码,整改自己的数据——数据类型、数据结构;组织方式、对应关系
- 套代码、调整细节
专题:R语言的综合应用
玩转字符串:基因名、样本名等都是字符串,经常打交道
数据框
超级R包:tidyverse——《R数据科学》
- dplyr
- stringr
stringr
str_length()
str_split()
str_split(x,"")_得到一个list
x2=str_split(x,"")[[1]];x2
str_split(y,"",simplify=T) _将字符串分割后的数据简化成matrix
str_sub()
str_sub(s,5,9) 截取一段“birtch”,这个函数支持像python一样的倒数位置
str_detect()
str_detect(x2,"h")是否含有h,含有h就返回True,不含邮h就False
lib
玩转数据狂
arrange(test,Sepal.Length)
能够实现整行在移动,(一个观测observation跟着动)
arrange(test,desc(Sepal.Length))
mutate(test,new=Sepa.Length*Sepal.Width) 新增一列定义一个title为new的变量赋值到每个observation
R语言里的修改都得赋值,不赋值就没有修改
select 选列,选变量
filter 选观测observation 选行
连续的步骤
x1=select(iris,-5)
x2=as.matrix(x1)
x3=head(x2,50)
pheatmap::pheatmap(x3)
pheatmap::pheatmap(head(as.matrix(select(iris,-5)),50) 减少了变量,前面三步变量好多,但是变量多对于写代码来说是一种好习惯吧?
iris %>% 管道符号,将符号前面的数据传递给符号后面处理步骤 Rstudio里输入command+shift+m,自动输入
select(-5)
条件和循环
这段讲的就挺简单的,对R来说不重要?毕竟可以直接取子集,直接选[]选出想要的数据,但是对python来说就是非常重要的概念,需要一遍又一遍地遍历数据才能完成所需的东西
i=-1
if(i<0)print('up')
if(i>0)print('down')
长脚本管理方式
好习惯:第一行清空,并且从第一行开始运行
if(F){...}则大括号里的代码跳过
if(T){...}则大括号里的代码运行
file.exists("....R")判断某个文件在工作目录下是否存在,可以返回一个true of false
if( ! file.exists("....R") )