其他
每天学习一点R:21.玫瑰图在生物研究中的实际应用
最近由于人民日报的一张图,直接导致玫瑰图大火,我在之前也对人民日报的疫情玫瑰图进行了仿制。
但是实话说,在我们平时的科研数据展示的过程中,玫瑰图的使用频率还是相对比较低的,今天就介绍一个适合用玫瑰图进行展示的数据类型。
我们平时无论是做转录组、蛋白质组还是宏基因组等,其中都会有一项结果就是COG数据库注释,COG将所有基因按照功能分为26个大类,以26个英文字母表示,而通常测序公司给我们的图是这个样子的。
今天我们使用玫瑰图的形式来展示这个数据,首先需要将数据格式条形为如下形式:
数据共分3列,第一列是COG功能对应的英文字母,第二列是注释到该功能基因的数目,第三类是该分类的详细名称。
接下来我们进行绘图。
#载入绘图包
library(ggplot2)
#导入绘图数据
f<-read.table("cog_lab", header=T, sep="\t")
#对图例标签进行处理
myLabel = as.vector(f$lab)
#根据数据计算每个功能分类所占的比例并添加到图例标签中
myLabel = paste(myLabel, " (", round(f$mag / sum(f$mag) * 100, 2), "%) ", sep = "")
#绘制图像
p<-ggplot(f, aes(x=dir, y=factor(mag), fill=dir))+
geom_bar(stat='identity')+
coord_polar()+
labs(x = "", y = "Number of Unigenes", title = "COG Function Classification of Unigene Sequence")+
theme(axis.ticks = element_blank())+
theme(legend.title = element_blank())+
theme(panel.background=element_blank())+
scale_fill_discrete(breaks = f$dir, labels = myLabel)
#图像输出
png("COG.png",width = 8200,height = 5400,res = 600,type = "cairo")
p
dev.off()
由于图例中有26个参数,如果把图例设置调整为1列会导致字体过小看不清楚,因此正常的出图是这个样子的。
之后手动PS一下,把图例调整为一列,最终得到的图像是下面这个样子。
关注公众号“红皇后学术”,后来回复“COG玫瑰图”获取示例数据和绘图代码。