分享

ggplot做split小提琴图并添加显著性

 TS的美梦 2023-03-24 发布于广东

3、付费文章集合有打包价哦!

详情请联系作者:

前言:

我认为学习除了接受新的知识外,真正的提高就是自己独当一面解决问题。所以每次遇到问题的时候是否应该第一反应是思考下哪里有问题,第二反应是百度检索或者bing检索一下呢。而不是点一下run之后直接给我们截图抱怨,你这个代码怎么错的。实在解决不了,可以和大家分享讨论,况且我们也计划做一个错误集合(R需要通用错误集合)。                                                                  ---KS科研分享与服务
前面我们展示了在单细胞数据中使用seurat中的VlnPlot函数做了split小提琴图,并写了一个函数(ggplot堆叠图无缝拼接(自写一个简洁堆叠小提琴图函数))。马上有爱学习的小伙伴提问了,我不做单细胞,也想这样展示两个组的基因表达怎么做,ggplot可以实现。接下来我们看看。数据代码已上传QQ群文件!

ggplot做split小提琴图,需要依赖一个包ggunchained,使用它的geom_split_violin函数就可以实现效果。首先做一个常规的图:
setwd('D:/KS项目/公众号文章/ggplot做split小提琴图')library(devtools)install_github("JanCoUnchained/ggunchained")library(ggunchained) library(ggplot2)library(ggpubr)
df <- read.csv('df.csv',header = T,row.names = 1)colnames(df) <- c('gene','sample','group')#常规作图,geom_split_violin函数即可ggplot(df, aes(x = sample,y = gene, fill = group))+ geom_split_violin(colour=NA, scale = 'width')+ scale_fill_manual(values = c("limegreen", "navy"))+ theme_bw()+ labs(title = "Mmp8", y="Expression", x = "")+ theme(plot.title = element_text(hjust = 0.5), axis.text.y = element_text(size = 10, color="black"), panel.background = element_blank(), axis.text.x = element_text(size = 10, color="black",angle = 90),        axis.title.y = element_text(size = 12, color="black"))

接着还可以做一下进一步的修饰,例如添加显著性,添加平均值等:
ggplot(df, aes(x = sample,y = gene, fill = group))+  geom_split_violin(colour=NA, scale = 'width')+  scale_fill_manual(values = c("limegreen", "navy"))+  theme_bw()+  labs(title = "Mmp8", y="Expression", x = "")+#标题设置  theme(plot.title = element_text(hjust = 0.5),        axis.text.y = element_text(size = 10, color="black"),        panel.background = element_blank(),        axis.text.x = element_text(size = 10, color="black",angle = 90),        axis.title.y = element_text(size = 12, color="black"))+  stat_summary(fun = mean,               fun.min = function(x){quantile(x)[2]},               fun.max = function(x){quantile(x)[4]},               geom = "pointrange",               size=0.3,               position = position_dodge(width = 0.5),               color='white')+  ylim(0,5)+  stat_compare_means(aes(group = group), label = "p.signif",label.y = 4.5)

效果还是很不错的。这样的展示不仅节约地方,图也更加清晰。好了,这就是所有内容了,希望对你学习有帮助。觉得分享有用的,点个免费的赞再走呗!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多