这里有一个ID向量,需要统计一下相同的ID出现的频率,并绘制柱状图,数据为一个向量data如下:
需要统计相同的ID出现的频率并绘制柱状图,如下:
R语言代码,统计向量的频次,其实很简单,用table方法一步就完成,后面就是绘图了:
注意本代码的主题为cowplot主题适合SCI文章发表,并设置了柱状图上加数字;
library(reshape2) local({r <- getOption("repos") ;r["CRAN"] <- "http://mirrors.tuna.tsinghua.edu.cn/CRAN/" ;options(repos=r)}) library(ggplot2) library(cowplot) library(RColorBrewer) pairjoin <- function(x){
ran=x
ran[length(ran)]=">=11"
ran=ran[-1]
ran
}
#统计频率,并把大于11的 归类到一起:
data=table(data)
data[data>10]=11
MassStatN <- with(hist(data, breaks=seq(0, 11, by = 1), plot=FALSE),
data.frame(N=counts, Mass=pairjoin(breaks), PCT=counts/sum(counts)))
MassStatN
MassStatN$Mass=factor(MassStatN$Mass,levels = MassStatN$Mass,order=T)
pn=ggplot(data=MassStatN, aes(x=Mass, y=N)) +
geom_bar(fill="#4DAF4A",alpha = .9, stat="identity",width=0.8) +
geom_text(aes(x=Mass,y=N+20,label=N))+
guides(fill=FALSE)+
theme(legend.key = element_blank(),legend.title = element_blank()
)+ xlab("Peptide number")+ylab("Protein number") +ggtitle("Peptide number distribution")
pn
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!