生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

278

主题
发表于 2021-11-4 20:12:22 | 查看: 1528| 回复: 1
本帖最后由 生信喵 于 2021-11-4 20:41 编辑

作为开篇的介绍,这好像是我第一次写关于R画图的内容,原因呢当然是因为本人懒。现在既然有要做平台,那么就努力更新点干货给大家吧!
虽然是一门统计语言,它的画图能力也毫不逊色。“R以能创建漂亮优雅的图形而闻名。”这是《R语言实战》一书中对R语言的简短有力的一句评价。
那么在研究生涯中。对于简单的统计图,我们使用prism、excel等画出来的竟然比自己用R画出来的还要好看。不禁让我们产生了疑问,这到底是为什么呢?
于是乎,大家就开始在百度上搜啊搜,谷歌上搜啊搜,很难找到对上自己口味的图,找到了呢可能又没有代码实操。
此次就是给大家这样一次机会,自己动手,丰衣足食。图给你,代码也给你。当然啦,文章分享出去,有了影响力,以后会有更多的同学从其他地方搜到我们的内容,就更好不过了。
以TP53基因和肝癌的关系为例,下面开始主线内容:
  1. load('20211104.Rda')#加载数据
  2. library(ggplot2)#加载包
  3. library(ggpubr)
  4. library(ggthemes)
复制代码
1.比较癌和癌旁
  1. df <- df1[,c('TP53','group')]#选择表达和分组的列
  2. df$group <- as.factor(df$group)#将分组定义为因子
  3. levels(df$group)#这里就可以看到分组的等级了,主要是为了检查,比如年龄分组,简单as.factor可能不是你想要的顺序,这个时候就需要factor(变量,levels=c('<40','40-50','≥50'))
复制代码
代码就不解释了,R语言的”?函数名“可以给大家很好的帮助。最后的效果呢?

是不是很赞?当然颜色不符合你的口味,大胆的去尝试不同的‘Red’Blue‘。
2.比较不同的肿瘤分级
  1. df <- df1[df1$group == 'Tumor',]#373个,去除了癌旁
  2. table(df$neoplasm_histologic_grade)#查看变量
  3. #   G1  G2  G3  G4
  4. # 5  55 178 123  12
  5. #这个时候存在<span style="background-color: yellow;">5个空值</span>,那么我们分析前需要排除
  6. df <- df[c('TP53','neoplasm_histologic_grade')]#选取对应列
  7. df <- na.omit(df)#373
  8. df <- df[!df$neoplasm_histologic_grade %in% c(''),]#已排除''的样本,373-5=368
  9. table(df$neoplasm_histologic_grade)#正常了
  10. df$neoplasm_histologic_grade <- as.factor(df$neoplasm_histologic_grade)
  11. levels(df$neoplasm_histologic_grade) #"G1" "G2" "G3" "G4",顺序也完美
  12. ggviolin(df, "neoplasm_histologic_grade", "TP53", fill = "neoplasm_histologic_grade",
  13.                palette = c('#C1FFC1','#7AC5CD','#E9967A','#FFB6C1'),
  14.                add = "boxplot", add.params = list(fill = "white"), trim = T) +
  15.   stat_compare_means() +
  16.   labs(x = 'histologic grade', y = 'log2(TP53 fpkm +1)',title = 'TCGA-LIHC') +
  17.   theme(panel.grid = element_blank(), axis.line = element_line(colour = 'black'), panel.background = element_blank(),
  18.         axis.text = element_text(size = 10, color = 'black'), axis.title = element_text(size = 12, color = 'black')) +
  19.   theme(plot.title = element_text(hjust = 0.5, face = "bold")) +
  20.   theme(legend.position="none")
复制代码

3.自定义分组
“一千个人眼中就有一千个哈姆雷特”,莎士比亚说过这样一句话,那么在生信分析中,不同的人有不同的分析手段,展现的结果也会不同。
就好比上图G4只有12人,我们可以合并到G3组中去。
  1. df$neoplasm_histologic_grade <- ifelse(df$neoplasm_histologic_grade %in% c('G3','G4'),'G3_4',
  2.                                        ifelse(df$neoplasm_histologic_grade == 'G1','G1','G2'))#合并G3G4
  3. levels(df$neoplasm_histologic_grade)#因为改动了数据,原有的因子转换成字符型了,这里返回NULL
  4. class(df$neoplasm_histologic_grade)#查看类型果然是"character"
  5. df$neoplasm_histologic_grade <- as.factor(df$neoplasm_histologic_grade)
  6. levels(df$neoplasm_histologic_grade) #"G1"   "G2"   "G3_4"完美,顺序也对
  7. ggviolin(df, "neoplasm_histologic_grade", "TP53", fill = "neoplasm_histologic_grade",
  8.          palette = c('#C1FFC1','#7AC5CD','#E9967A','#FFB6C1'),
  9.          add = "boxplot", add.params = list(fill = "white"), trim = T) +
  10.   stat_compare_means() +
  11.   labs(x = 'histologic grade', y = 'log2(TP53 fpkm +1)',title = 'TCGA-LIHC') +
  12.   theme(panel.grid = element_blank(), axis.line = element_line(colour = 'black'), panel.background = element_blank(),
  13.         axis.text = element_text(size = 10, color = 'black'), axis.title = element_text(size = 12, color = 'black')) +
  14.   theme(plot.title = element_text(hjust = 0.5, face = "bold")) +
  15.   theme(legend.position="none")
复制代码


至此。本篇内容介绍到这里。代码没有多余的了,全部分享给大家了。
示例数据的话,老规矩,放在下一楼

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

发表于 2021-11-4 20:16:27
代码中需要用到的输入数据:临床信息和TP53的表达数据。获取示例数据请在公众号"生信喵实验柴"后台回复“20211104”。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人

GMT+8, 2024-4-27 08:52 , Processed in 0.043933 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表