有人说富集也有用柱状图的,这个应该是最好画的图。可以水平放,也可以垂直放。
dt1 <- data[data$Time=="0.25h",]
CPCOLS <- c("red", "blue", "cyan")
textcolor <- c(rep("red",7),rep("cyan",13),rep("blue",10))
dt1$number <- factor(rev(1:nrow(dt1))) //生成一个numbder的原因是bar图画的时候它会按照字母的ASCII排序,我不想让它排序,所以直接生成了number,然后自己手动改x坐标。
ggplot(dt1, aes(x=number, y=ProteinNumber,fill=Class))+
geom_bar(stat = "identity")+
scale_fill_manual(values = CPCOLS)+
theme_test()+
coord_flip()+
scale_x_discrete(labels=rev(dt1$GO))+
xlab("GO term")+
ylab("Num of Genes")+
theme(axis.text=element_text(face = "plain"))+
theme(axis.text.y=element_text(color=rev(textcolor)))+
theme(legend.title=element_blank())+
theme(axis.text=element_text(size = 12))+
theme(axis.title = element_text(size = 20))
我也看到过别人画的这样子图,本身没有多大意义,但是感觉还挺好看。所以我们也试一下。其实还是简单的bar图,只不过在格式控制上要好好的学习一下。
还是用我们自己的测试数据:
为了显示那行黑色的,我又填加了一行隔断行:
dt1$number <- factor(rev(1:nrow(dt1))) //依旧是为了按照原先的排序设定的
textcolor <- c("black",rep("red",7),"black",rep("cyan",13),"black",rep("blue",10))
ggplot(dt1, aes(x=number, y=ProteinNumber,fill=Class))+
geom_bar(stat = "identity")+
theme_test()+
coord_flip()+
scale_x_discrete(labels=rev(dt1$GO))+
geom_text(aes(label = ProteinNumber, y= ProteinNumber + 2), size = 3) + //为了添加bar上面的数字
theme(axis.text.y=element_text(color=rev(textcolor),face="bold",hjust=0,lineheight=3))+ //按照设定颜色来显示X坐标 hjust让坐标左对齐
xlab("")+
ylab("Number of Gene")+
scale_y_continuous(breaks=seq(0,150, 20))+
ggtitle("KEGG pathway annotation")+
theme(legend.position = "none", //不显示legend
axis.ticks.y = element_blank(), //不显示y轴的刻度
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_line(linetype = "dashed"),
panel.grid.major.y = element_line(linetype = "dashed"), //修改显示的网格线
plot.title = element_text(hjust = 0.5, size = 10) //让title居中
)