【小洁老师语录】画图的目的是展示自己的数据 【小洁老师语录】ggplot2的特殊语法:列名不带引号,行末写加号
几何对象可以叠加
library(ggplot2)
ggplot(data = iris)+
geom_smooth(mapping = aes(x = Sepal.Length,y = Petal.Length))+
geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length))#两个geom函数是局部图层+局部图层
ggplot(data = iris,mapping = aes(x = Sepal.Length,y = Petal.Length))+
geom_smooth()+
geom_point()#这个代码和上一句代码运行结果一致,简化写法,ggplot()中设置是全局设置,对于代码中所有的geom函数都有效,自定义可以在局部的函数中设置
ggplot(iris)+
geom_boxplot(mapping = aes(x = Species,y = Sepal.Width,fill = Species))
library(ggplot2)
ggplot(iris)+
geom_boxplot(mapping = aes(x = Species,y = Sepal.Width,fill = Species))+
geom_point(mapping = aes(x = Species,y = Sepal.Width))
#或者
ggplot(iris,mapping = aes(x = Species,y = Sepal.Width))+
geom_boxplot(mapping = aes(fill = Species))+
geom_point()
怎么改变歧义:使用如下代码作图
ggplot(iris,mapping = aes(x = Species,y = Sepal.Width,fill = Species))+
geom_boxplot()+
geom_point(position = "jitter")
#或
ggplot(iris,mapping = aes(x = Species,y = Sepal.Width,fill = Species))+
geom_boxplot()+
geom_jitter()
【小洁老师语录】代码不报错,不代表真的没错,有歧义也是错误!不能将之发表于文字。
火山图可以由点图画出来
重启session(重新打开RStudio、重启R,打开新的session)时需要重新加载R包
coord_flip(): 反转坐标系,最后一行加上代码即可。
【小洁老师语录】作图不用默认主题,要追求颜值!!!
theme_bw()#改主题,该代码可去掉默认主题中的灰色格子。
ggplot(data = <DATA>)+
<GEOM_FUNCTION>(
mapping = aes(<MAPPINGS>),
position = <POSITION位置>
)+
<COORDINATE_FUNCTION坐标系>+
<THEME_FUNCTION主题>
library(ggpubr)
p <- ggboxplot(iris,x = "Species",y = "Sepal.Length",
color = "Species",shape = "Species",add = "jitter")
p
ggpubr的新手友好函数:
my_comparisions <- list(c("setosa","versicolor"),
c("setosa","virginica"),
c("versicolor","virginica"))
p + stat_compare_means(comparisons = my_comparisions,
aes(label = after_stat(p.signif)))
#comparisons参数要求很严格:必须有列表;列表里必须是长度为2向量组成的;第三这些向量里""里的的值必须是图的横坐标;三个要求缺一就会报错!!!
save_export.R
ggsave("iris_box_ggpubr.png(图片名称和格式)")或
ggsave(p,filename = "iris_box_ggpubr.png(图片名称和格式)")
后缀不可以写错,必须是存在的图片格式
第一段:保存的函数及文件名 > pdf("test.pdf(文件名称.pdf)")#❓pdf可以查看有哪些可以保存的格式
第二段:作图代码 > 吧啦吧啦你的作图的代码,可以容纳多多
第三段:画完了,关闭画板 > dev.off()
library(eoffice)#加载
topptx(p,"iris_box_ggpubr.pptx")#将图(变量p)保存到ppt内
为啥保存成ppt格式?
「时间紧迫时使用eoffice的R包」可以用ppt编辑图片,使用门槛比ps/ai低一些。图片的每一个点、线、字都可以成为可编辑元素。
超多点的图或超多行列的热图不适用ppt保存方式,因为ppt会变成卡卡!
R包patchwork:堪比R语言领域的“美图羞羞”
?geom_violin
ggplot(iris,mapping = aes(x = Species,y = Sepal.Width))+
geom_violin(mapping = aes(fill = Species))+
geom_boxplot()+
geom_jitter(aes(shape = Species))+
coord_flip()
作业里认识到几个问题:
先跑通示例代码,然后置换自己的数据
dev.off()#关闭画板
#或
dev.new()#新建画板
该笔记工作目录下
基础包画图500行代码zz_basic plot ... .R
ggplot2画图50个案例:top50ggplot.html
小洁老师语雀的画图合集
如何控制横坐标、纵坐标顺序??
【小洁老师语录】现成的画图代码不难找,多搜搜,多找找 【小洁老师语录】画图代码 + 自己数据 + 解决问题的能力 = 美美的图
文献参考等
代码可复制,图片美观
提供了代码配套的示例数据
示例代码+示例数据>画出示例数据的图
弄清代码里需要的数据类型、数据结构
理清组织方式、对应关系
【小洁老师语录】避免手搓代码!!!!!
【小洁老师语录】发现问题的眼睛,面对困难的信心,解决问题的能力
tidyverse,大神的包,小的生态系统,《R数据科学》
rm(list = ls())
if(!require(stringr))install.packages('stringr')
library(stringr)
x <- "The birch canoe slid on the smooth planks."
x
### 1.检测字符串长度
str_length(x)#返回42(字符串的长度)
length(x)#返回1(向量的元素)
### 2.字符串拆分
str_split(x," ")#为何拆分成列表?列表第几个元素,就是拆分出向量的第几个元素
class(str_split(x," "))#列表
x2 = str_split(x," ")[[1]];x2#提取出向量
y = c("jimmy 150","nicker 140","tony 152")
str_split(y," ")
str_split(y," ",simplify = T)#该参数简化作用,输出结果变成矩阵
### 3.按位置提取字符串
str_sub(x,5,9)
### 4.字符检测(非常重要‼️)
str_detect(x2,"h")#产生结果是与x2相等的逻辑值向量,可用于按照逻辑值筛选
str_starts(x2,"T")
str_ends(x2,"e")
### 5.字符串替换
x2
str_replace(x2,"o","A")#只替换每个元素字符串的一个字符
str_replace_all(x2,"o","A")
### 6.字符删除
x
str_remove(x," ")#只删除每个元素字符串的一个字符
str_remove_all(x," ")
#我的回答
x1 = read.csv("group.csv")
x2 <- x1$title
x2
library(stringr)
x3 <- str_remove_all(x2,"A375 cells 24h ")
x3
x4 <- str_remove_all(x3," rep1")
x4
x5 <- str_remove_all(x4," rep2")
x6 <- str_remove_all(x5," rep3")
x6
x7 <- str_replace(x6,"C","c")
x8 <- str_replace(x7,"V","v")
x8
load("test1.Rdata")
#先按照symbol找出不重复的行
unique(ids["symbol"])
或
unique(ids$symbol)
然后提取出相关行的行名
raw <- rownames(unique(ids["symbol"]))
raw
class(raw)#返回结果是字符串
raw2 <- as.numeric(raw)
class(raw2)
raw2#数字组成的向量
ids2 <- ids[raw2,];ids2
#小洁老师的答案,应用了字符串拆分,步骤非常简化,比我的简单多了,我的步骤繁琐。
a <- read.csv("group.csv")
g <- str_split(a$title," ",simplify = T)#转化成矩阵
g
g2 <- g[,4];g2
#或
str_sub(a$title,16,-6)
str_remove_all(a$title,"A375 cells 24h | rep1| rep2| rep3")#我想到了管道符,但是用法错了,我想这里加深了对管道符的理解了
#或
str_remove_all(a$title,"A375 cells 24h | rep\\d")#\\dd代表任意数字
tolower(g[,4])#大写换小写的函数1
str_to_lower(g[,4])#大写换小写的函数2
arrage()#排序
arrage(test,Sepal.Length)#加引号不会排序,而且不会报错。对表格按照第一列排序,默认从小到大
arrage(test,desc(Sepal.Length))#从大到小排序,没有为什么哦!
distinct()#去重复
distinct(test,Species,.keep_all = T)# .keep_all参数意思是是否保留其他列,T保留,F不保留
mutate()#数据框新增列
mutate(test,new = Sepal.Length*Sepal.Width)#运行完这句代码后test有几列?答案是列数不变,因为没有赋值就没有改变。test$new <- test$Sepal.Length*Sepal.Width
【小洁老师语录】R语言里修改,没有赋值就没有发生过!修改赋值修改赋值修改赋值!!!
select()#筛选列
filter()#筛选行
x1 <- select(iris,-5)
x2 <- as.matrix(x1)
x3 <- head(x2,50)
pheatmap::pheatmap(x3)
#或
pheatmap::pheatmap(head(as.matrix(select(iris,-5)),50))#嵌套函数等于上边4句代码,非常不易读
#管道符号传递%>%
iris %>%
select(-5) %>%
as.matrix() %>%
head() %>%
pheatmap::pheatmap()# %>%前的代码,默认为下一个函数()里的第一个参数。易读,而且代码简单,缺点是降低运算速度。
彩虹括号设置:同一对括号同一个颜色;option > code > disply > use rainbow...搭配嵌套函数使用
if条件语句
if(一个逻辑值,不可以是多个逻辑值组成的向量,T的话执行code1,F不执行){code1}
GEO > serirs > 感兴趣关键词搜索 > 芯片(关键词是expression profiling by array)和转录组数据(转录组的关键词expression profilingby HTS),可以用关键词筛选。样本数应大于6。物种筛选。
点样本看数据分布范围,有没有全部在0附近。有大量小于0就是不正常的。是否有分组信息?找实验分组,每个组应超过3个。
生信技能树公众号 生信入门马拉松课程
小洁老师
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。