今天使用R语言ggplot做一下NC文章的分组柱状图。原文提供原始作图数据,本文使用数据及整合、还有注释代码已上传群文件。
更多内容请至我的公众号---KS科研分享与服务
image.png(Reference:Senescent cells limit p53 activity via multiple mechanisms to remain viable)
原文提供的两组基因表达数据,首先进行数据处理。
sh1 <- read.csv("sh1.csv",header = T)
sh2 <- read.csv("sh2.csv",header = T)
数据转化与合并:
library(tidyr)
sh1 <-gather(sh1, gene, value, 1:7)
sh1$group <- "sh1"
sh2 <-gather(sh2, gene, value, 1:7)
sh2$group <- "sh2"
sh1<-na.omit(sh1)
sh2<-na.omit(sh2)
data <- rbind(sh1, sh2)
因子排序:
library(forcats)
data$gene <- as.factor(data$gene)
data$gene <- fct_inorder(data$gene)
ggplot作图:
ggplot(data, aes(fill=group, y=value, x=gene))+
geom_bar(position=position_dodge(),
stat="summary",
width=0.7,
colour = "black",
size=1)+
theme_classic(base_size = 12)+
geom_hline(aes(yintercept=100),linetype=2,cex=0.5)+
labs(title = "", y="Survival(%)", x = "")+
scale_y_continuous(limits = c(0,150),expand = c(0,0))+
theme(axis.text.x = element_text(size = 12,angle = 90,
color = 'black',face='italic',
hjust = 1))+
theme(axis.text.y = element_text(size = 12, color = 'black'))+
theme(legend.title = element_text(color = 'red'))+
geom_jitter(data = data, aes(y = value),
size = 3, shape = 16,
color="#91393B",
stroke = 0.15, show.legend = FALSE,
position = position_jitterdodge(jitter.height=0.5,
jitter.width = 0.1,
dodge.width = 0.8))+
stat_summary(fun.data = 'mean_se',
geom = "errorbar",
colour = "black",
width = 0.2,
position=position_dodge(0.7))+
scale_fill_manual(values = c('#EE2024','#F69CA4'))+
annotate(geom = 'text', label="n=9", x=0.8, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=9", x=1.2, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=2.2, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=9", x=2.8, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=9", x=3.2, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=3.8, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=4.2, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=4.8, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=5.2, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=5.8, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=6.2, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=12", x=6.8, y=10, angle=90,size=5)+
annotate(geom = 'text', label="n=9", x=7.2, y=10, angle=90,size=5)
这样就可以了,具体细节还需自己调整,P值的添加也可以用annotate函数。
image.png
网友评论