|
发表于 2021-11-4 20:12:22
|
查看: 2293 |
回复: 1
本帖最后由 生信喵 于 2021-11-4 20:41 编辑
作为开篇的介绍,这好像是我第一次写关于R画图的内容,原因呢当然是因为本人懒。现在既然有要做平台,那么就努力更新点干货给大家吧!
虽然是一门统计语言,它的画图能力也毫不逊色。“R以能创建漂亮优雅的图形而闻名。”这是《R语言实战》一书中对R语言的简短有力的一句评价。
那么在研究生涯中。对于简单的统计图,我们使用prism、excel等画出来的竟然比自己用R画出来的还要好看。不禁让我们产生了疑问,这到底是为什么呢?
于是乎,大家就开始在百度上搜啊搜,谷歌上搜啊搜,很难找到对上自己口味的图,找到了呢可能又没有代码实操。
此次就是给大家这样一次机会,自己动手,丰衣足食。图给你,代码也给你。当然啦,文章分享出去,有了影响力,以后会有更多的同学从其他地方搜到我们的内容,就更好不过了。
以TP53基因和肝癌的关系为例,下面开始主线内容:
- load('20211104.Rda')#加载数据
- library(ggplot2)#加载包
- library(ggpubr)
- library(ggthemes)
复制代码 1.比较癌和癌旁
- df <- df1[,c('TP53','group')]#选择表达和分组的列
- df$group <- as.factor(df$group)#将分组定义为因子
- levels(df$group)#这里就可以看到分组的等级了,主要是为了检查,比如年龄分组,简单as.factor可能不是你想要的顺序,这个时候就需要factor(变量,levels=c('<40','40-50','≥50'))
复制代码 代码就不解释了,R语言的”?函数名“可以给大家很好的帮助。最后的效果呢?
是不是很赞?当然颜色不符合你的口味,大胆的去尝试不同的‘Red’Blue‘。
2.比较不同的肿瘤分级
- df <- df1[df1$group == 'Tumor',]#373个,去除了癌旁
- table(df$neoplasm_histologic_grade)#查看变量
- # G1 G2 G3 G4
- # 5 55 178 123 12
- #这个时候存在<span style="background-color: yellow;">5个空值</span>,那么我们分析前需要排除
- df <- df[c('TP53','neoplasm_histologic_grade')]#选取对应列
- df <- na.omit(df)#373
- df <- df[!df$neoplasm_histologic_grade %in% c(''),]#已排除''的样本,373-5=368
- table(df$neoplasm_histologic_grade)#正常了
- df$neoplasm_histologic_grade <- as.factor(df$neoplasm_histologic_grade)
- levels(df$neoplasm_histologic_grade) #"G1" "G2" "G3" "G4",顺序也完美
- ggviolin(df, "neoplasm_histologic_grade", "TP53", fill = "neoplasm_histologic_grade",
- palette = c('#C1FFC1','#7AC5CD','#E9967A','#FFB6C1'),
- add = "boxplot", add.params = list(fill = "white"), trim = T) +
- stat_compare_means() +
- labs(x = 'histologic grade', y = 'log2(TP53 fpkm +1)',title = 'TCGA-LIHC') +
- theme(panel.grid = element_blank(), axis.line = element_line(colour = 'black'), panel.background = element_blank(),
- axis.text = element_text(size = 10, color = 'black'), axis.title = element_text(size = 12, color = 'black')) +
- theme(plot.title = element_text(hjust = 0.5, face = "bold")) +
- theme(legend.position="none")
复制代码
3.自定义分组
“一千个人眼中就有一千个哈姆雷特”,莎士比亚说过这样一句话,那么在生信分析中,不同的人有不同的分析手段,展现的结果也会不同。
就好比上图G4只有12人,我们可以合并到G3组中去。
- df$neoplasm_histologic_grade <- ifelse(df$neoplasm_histologic_grade %in% c('G3','G4'),'G3_4',
- ifelse(df$neoplasm_histologic_grade == 'G1','G1','G2'))#合并G3G4
- levels(df$neoplasm_histologic_grade)#因为改动了数据,原有的因子转换成字符型了,这里返回NULL
- class(df$neoplasm_histologic_grade)#查看类型果然是"character"
- df$neoplasm_histologic_grade <- as.factor(df$neoplasm_histologic_grade)
- levels(df$neoplasm_histologic_grade) #"G1" "G2" "G3_4"完美,顺序也对
- ggviolin(df, "neoplasm_histologic_grade", "TP53", fill = "neoplasm_histologic_grade",
- palette = c('#C1FFC1','#7AC5CD','#E9967A','#FFB6C1'),
- add = "boxplot", add.params = list(fill = "white"), trim = T) +
- stat_compare_means() +
- labs(x = 'histologic grade', y = 'log2(TP53 fpkm +1)',title = 'TCGA-LIHC') +
- theme(panel.grid = element_blank(), axis.line = element_line(colour = 'black'), panel.background = element_blank(),
- axis.text = element_text(size = 10, color = 'black'), axis.title = element_text(size = 12, color = 'black')) +
- theme(plot.title = element_text(hjust = 0.5, face = "bold")) +
- theme(legend.position="none")
复制代码
至此。本篇内容介绍到这里。代码没有多余的了,全部分享给大家了。
示例数据的话,老规矩,放在下一楼
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
|