输入数据为一个向量,数值范围为0-100+:
统计不同数值范围的数值分布频率,并绘制柱状图,如下所示,并把大于100的数值统计到一个柱子当中:
具体R语言代码如下:
注意本代码的主题为cowplot主题适合SCI文章发表,并设置了x轴刻度标签倾斜;
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=paste(head(x,-1), tail(x,-1), sep="-")
ran[length(ran)]=">100"
ran
}
# use the base hist() function to calculate BINs ,超过100的数值归类到一起;
data[data>100]=101
MassStat <- with(hist(data, breaks=seq(0, 110, by = 10), plot=FALSE), data.frame(N=counts, Mass=pairjoin(breaks), PCT=counts/sum(counts)))
MassStat
MassStat$Mass=factor(MassStat$Mass,levels = MassStat$Mass,order=T)
pm=ggplot(data=MassStat, aes(x=Mass, y=PCT*100)) +
geom_bar(fill="#4DAF4A",alpha = .9, stat="identity",width=0.8) +
guides(fill=FALSE)+
theme(legend.key = element_blank(),legend.title = element_blank(),
axis.text.x = element_text(angle=70, vjust=0.5)
)+ xlab("Protein mass (kDa)")+ylab("Percent(%)") +ggtitle("Protein mass distribution")
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!