zl程序教程

您现在的位置是:首页 >  其他

当前栏目

为什么我的小提琴图不好看

2023-04-18 14:52:42 时间

作为开篇的介绍,这好像是我第一次写关于R画图的内容,原因呢当然是因为本人懒。现在既然有要做平台,那么就努力更新点干货给大家吧! 虽然是一门统计语言,它的画图能力也毫不逊色。“R以能创建漂亮优雅的图形而闻名。”这是《R语言实战》一书中对R语言的简短有力的一句评价。 那么在研究生涯中。对于简单的统计图,我们使用prism、excel等画出来的竟然比自己用R画出来的还要好看。不禁让我们产生了疑问,这到底是为什么呢? 于是乎,大家就开始在百度上搜啊搜,谷歌上搜啊搜,很难找到对上自己口味的图,找到了呢可能又没有代码实操。 此次就是给大家这样一次机会,自己动手,丰衣足食。图给你,代码也给你。当然啦,文章分享出去,有了影响力,以后会有更多的同学从其他地方搜到我们的内容,就更好不过了。 以TP53基因和肝癌的关系为例,下面开始主线内容:

load('20211104.Rda')#加载数据
library(ggplot2)#加载包
library(ggpubr)
library(ggthemes)

复制代码

1.比较癌和癌旁
df <- df1[,c('TP53','group')]#选择表达和分组的列
dfgroup <- as.factor(df
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)#正常了

dfneoplasm_histologic_grade <- as.factor(df
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组中去。

dfneoplasm_histologic_grade <- ifelse(df
                                       ifelse(df$neoplasm_histologic_grade == 'G1','G1','G2'))#合并G3G4

levels(df$neoplasm_histologic_grade)#因为改动了数据,原有的因子转换成字符型了,这里返回NULL

class(df$neoplasm_histologic_grade)#查看类型果然是"character"

dfneoplasm_histologic_grade <- as.factor(df
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")

复制代码

至此。本篇内容介绍到这里。代码没有多余的了,全部分享给大家了。

代码中需要用到的输入数据:临床信息和TP53的表达数据。