分享

ggplot做分组柱状图-箱线图-小提琴图添加趋势线

 TS的美梦 2024-05-13

1、《KS科研分享与服务》公众号有QQ交流群,进入门槛是20元(完全是为了防止白嫖党,请理解),请考虑清楚。群里有免费推文的注释代码和示例数据(终身拥有),没有付费内容,群成员福利是购买单个付费内容半价!

2、《KS科研分享与服务》微信VIP群只针对购买打包代码的小伙伴(公众号所有付费内容合集)!微信群不是单独的,是对于打包的人答疑解惑和交流的平台、群成员专享视频教程,帖子提前发布,以及其他更多福利!

点击:→ 加入微信vip群:2024-2025《KS科研分享与服务》付费内容打包集合

3、需进QQ群或者打包代码入微信VIP的小伙伴请添加作者微信了解,请备注目的,除此之外请勿添加,谢谢!

详情请联系作者:

起因是有小伙伴咨询,做柱状图的时候,怎么添加趋势线,其实很简单,添加一个线性拟合图层即可。刚好最近看到这种图,在做分组表达量箱线图或者小提琴图的时候,在上面添加一个趋势的拟合,可以很清楚的知道表达趋势。示例数据及代码已上传群,请自行下载!

首先读入数据;这里我们选择了多个数据,利用循环作图。
setwd('D:\\KS项目\\公众号文章\\ggplot作图添加趋势线')
library(RColorBrewer)library(ggpubr)library(ggplot2)library(cowplot)
Exp <- read.csv("Exp.csv",header=T,row.names=1)gene <- c("CD28","CD3D","CD8A","LCK", "GATA3","EOMES","IL23A","CXCL8", "IL1R2","IL1R1","MMP8","MMP9")Exp <- log2(Exp+1) Exp_plot <- Exp[,gene]

info <- read.csv("info.csv",header=T)Exp_plot<- Exp_plot[info$Sample,]Exp_plot$sam=info$TypeExp_plot$sam <- factor(Exp_plot$sam, levels=c("Asymptomatic", "Mild", "Severe", "Critical"))

col <-c("#5CB85C","#337AB7","#F0AD4E","#D9534F")
小提琴图:
plist2<-list()for (i in 1:length(gene)) {
df<-Exp_plot[,c(gene[i],"sam")]  colnames(df)<-c("Expression","sam") my_comparisons1 <- list(c("Asymptomatic", "Mild")) my_comparisons2 <- list(c("Asymptomatic", "Severe")) my_comparisons3 <- list(c("Asymptomatic", "Critical")) my_comparisons4 <- list(c("Mild", "Severe")) my_comparisons5 <- list(c("Mild", "Critical")) my_comparisons6 <- list(c("Severe", "Critical"))

p = ggplot(df, aes(x=sam, y=Expression)) +     geom_point(color='#bbbdbf', position = 'jitter') +  geom_violin(notch = F, outlier.colour = NA, mapping = aes(fill=as.factor(sam)))+ geom_smooth(data = df, mapping = aes(x=as.numeric(sam), y=Expression), color='red', se = F, method = 'lm')+ scale_fill_manual(values = col)+ theme(axis.line=element_line(colour="black"), axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.x = element_text(size = 15,angle = 45,vjust = 1,hjust = 1), axis.text.y = element_text(size = 15), plot.title = element_text(hjust = 0.5,size=15,face="bold"), legend.position = "NA")+ ggtitle(gene[i])+ stat_compare_means(method="t.test",hide.ns = F, comparisons =c(my_comparisons1,my_comparisons2,my_comparisons3,my_comparisons4,my_comparisons5,my_comparisons6), label="p.signif")
plist2[[i]]<-p
}
#cowplot拼图。plot_grid(plist2[[1]],plist2[[2]],plist2[[3]], plist2[[4]],plist2[[5]],plist2[[6]], plist2[[7]],plist2[[8]],plist2[[9]], plist2[[10]],plist2[[11]],plist2[[12]],ncol=4)

小提琴图+箱线图:
plist3<-list()
for (i in 1:length(gene)) {
df<-Exp_plot[,c(gene[i],"sam")] colnames(df)<-c("Expression","sam") my_comparisons1 <- list(c("Asymptomatic", "Mild")) my_comparisons2 <- list(c("Asymptomatic", "Severe"))  my_comparisons3 <- list(c("Asymptomatic", "Critical")) my_comparisons4 <- list(c("Mild", "Severe"))  my_comparisons5 <- list(c("Mild", "Critical")) my_comparisons6 <- list(c("Severe", "Critical"))

p = ggplot(df, aes(x=sam, y=Expression)) + geom_point(color='#bbbdbf', position = 'jitter') + geom_violin(notch = F, outlier.colour = NA, mapping = aes(fill=as.factor(sam))) + geom_boxplot(mapping = aes(fill=as.factor(sam)), width=0.2)+ geom_smooth(data = df, mapping = aes(x=as.numeric(sam), y=Expression), color='red', se = F, method = 'lm')+ scale_fill_manual(values = col)+ theme(axis.line=element_line(colour="black"), axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.x = element_text(size = 15,angle = 45,vjust = 1,hjust = 1), axis.text.y = element_text(size = 15), plot.title = element_text(hjust = 0.5,size=15,face="bold"), legend.position = "NA")+ ggtitle(gene[i])+ stat_compare_means(method="t.test",hide.ns = F, comparisons =c(my_comparisons1,my_comparisons2,my_comparisons3,my_comparisons4,my_comparisons5,my_comparisons6), label="p.signif")
plist3[[i]]<-p
}

plot_grid(plist3[[1]],plist3[[2]],plist3[[3]], plist3[[4]],plist3[[5]],plist3[[6]], plist3[[7]],plist3[[8]],plist3[[9]], plist3[[10]],plist3[[11]],plist3[[12]],ncol=4)

小提琴图+箱线图+曲线拟合:
plist4<-list()
for (i in 1:length(gene)) {
df<-Exp_plot[,c(gene[i],"sam")]  colnames(df)<-c("Expression","sam") my_comparisons1 <- list(c("Asymptomatic", "Mild")) my_comparisons2 <- list(c("Asymptomatic", "Severe")) my_comparisons3 <- list(c("Asymptomatic", "Critical"))  my_comparisons4 <- list(c("Mild", "Severe")) my_comparisons5 <- list(c("Mild", "Critical")) my_comparisons6 <- list(c("Severe", "Critical"))

p = ggplot(df, aes(x=sam, y=Expression)) + geom_point(color='#bbbdbf', position = 'jitter') + geom_violin(notch = F, outlier.colour = NA, mapping = aes(fill=as.factor(sam))) + geom_boxplot(mapping = aes(fill=as.factor(sam)), width=0.2)+ geom_smooth(data = df, mapping = aes(x=as.numeric(sam), y=Expression), color='red', se = F, method = 'loess')+ scale_fill_manual(values = col)+ theme(axis.line=element_line(colour="black"), axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.x = element_text(size = 15,angle = 45,vjust = 1,hjust = 1), axis.text.y = element_text(size = 15), plot.title = element_text(hjust = 0.5,size=15,face="bold"), legend.position = "NA")+ ggtitle(gene[i])+ stat_compare_means(method="t.test",hide.ns = F, comparisons =c(my_comparisons1,my_comparisons2,my_comparisons3,my_comparisons4,my_comparisons5,my_comparisons6), label="p.signif")
plist4[[i]]<-p
}

plot_grid(plist4[[1]],plist4[[2]],plist4[[3]], plist4[[4]],plist4[[5]],plist4[[6]], plist4[[7]],plist4[[8]],plist4[[9]], plist4[[10]],plist4[[11]],plist4[[12]],ncol=4)

柱状图+散点图+拟合:
plist5<-list()
for (i in 1:length(gene)) { df<-Exp_plot[,c(gene[i],"sam")] colnames(df)<-c("Expression","sam") my_comparisons1 <- list(c("Asymptomatic", "Mild")) my_comparisons2 <- list(c("Asymptomatic", "Severe")) my_comparisons3 <- list(c("Asymptomatic", "Critical")) my_comparisons4 <- list(c("Mild", "Severe")) my_comparisons5 <- list(c("Mild", "Critical")) my_comparisons6 <- list(c("Severe", "Critical")) p = ggplot(df, aes(x=sam, y=Expression)) + geom_bar(width = 0.5, aes(fill=sam), stat = 'summary')+ geom_point(color='#bbbdbf', position = 'jitter') + geom_smooth(data = df, mapping = aes(x=as.numeric(sam), y=Expression), color='red', se = F, method = 'lm')+ scale_fill_manual(values = col)+ theme(axis.line=element_line(colour="black"), axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.x = element_text(size = 15,angle = 45,vjust = 1,hjust = 1), axis.text.y = element_text(size = 15), plot.title = element_text(hjust = 0.5,size=15,face="bold"), legend.position = "NA")+ ggtitle(gene[i])+ stat_compare_means(method="t.test",hide.ns = F, comparisons =c(my_comparisons1,my_comparisons2,my_comparisons3,my_comparisons4,my_comparisons5,my_comparisons6), label="p.signif") plist5[[i]]<-p }

plot_grid(plist5[[1]],plist5[[2]],plist5[[3]], plist5[[4]],plist5[[5]],plist5[[6]], plist5[[7]],plist5[[8]],plist5[[9]], plist5[[10]],plist5[[11]],plist5[[12]],ncol=4)

希望分享对你有用!点着赞再走呗!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多