有小伙伴发来图,想让实现一下,是一个KEGG分析的柱状图,图的特点是文字标签颜色与柱子颜色一样,其实这个图也就这么一个特点,其他的柱状图的特征都没有什么,很普通的ggplot做法,最终效果如下:
image.png
首先读入数据,示例数据使用的是之前的文章:复现《nature communications》图表(四):ggplot画多组富集气泡图。
setwd("E:/")
A <- read.csv("GO.csv", header = T)
library(ggplot2)
library(forcats)
A$Description <- as.factor(A$Description)
A$Description <- fct_inorder(A$Description)
先做一个普通的柱状图。只需要两个参数,一个是gene count,一个是富集的GO或者KEGG terms。
ggplot(A)+
geom_bar(aes(Description, Count),stat = "identity")+
coord_flip()
image.png
我们先不急着实现文字标签,先进行ggplot基础的修饰。
ggplot(A,aes(Description, Count))+
geom_bar(aes(fill=Cluster),stat = "identity")+
geom_text(aes(label=Count, y=Count+5),size=3)+
coord_flip()+
labs(x='',y='Gene count', title = 'GO enrichment of cluster')+
scale_fill_manual(values = c('#852f88',
'#eb990c',
'#0f8096'))+
theme_bw()+
theme(panel.grid = element_blank(),
legend.position = 'none',
axis.ticks.y = element_blank(),
plot.title = element_text(hjust = 0.5, size = 10))
image.png
接下来就是最后一步了,将文字标签颜色设置为和柱子一样就完成了。我这里是分为了3组,将三组标签赋予对应的颜色即可。
table(A$Cluster)
#Cluster1 Cluster2 Cluster3
#13 12 13
col <- c(rep("#852f88",13),rep("#eb990c",12),rep("#0f8096",13))
ggplot(A,aes(Description, Count))+
geom_bar(aes(fill=Cluster),stat = "identity")+
geom_text(aes(label=Count, y=Count+5),size=3)+
coord_flip()+
labs(x='',y='Gene count', title = 'GO enrichment of cluster')+
scale_fill_manual(values = c('#852f88',
'#eb990c',
'#0f8096'))+
theme_bw()+
theme(panel.grid = element_blank(),
legend.position = 'none',
axis.ticks.y = element_blank(),
plot.title = element_text(hjust = 0.5, size = 10),
axis.text.y = element_text(size=rel(0.85),colour =col),
plot.margin=unit(x=c(top.mar=0.2,right.mar=0.2,
bottom.mar=0.2,left.mar=0.2),
units="inches"))
image.png
还不错,其他的细节问题这里就不再赘述了,自行调整吧!
更多精彩内容请关注我的公众号=------《KS科研分享与服务》----------------------------