R语言统计数据范围并用ggplot2绘制柱状图

R语言,按数值范围统计频次,绘制柱状图

输入数据为一个向量,数值范围为0-100+:

attachments-2018-07-1SGndenu5b3882cbad975.jpg

统计不同数值范围的数值分布频率,并绘制柱状图,如下所示,并把大于100的数值统计到一个柱子当中:

attachments-2018-07-SZe6VFTR5b3883330a479.jpg

具体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")
  • 发表于 2018-07-01 15:33
  • 阅读 ( 8790 )
  • 分类:R

0 条评论

请先 登录 后评论
omicsgene
omicsgene

生物信息

700 篇文章

作家榜 »

  1. omicsgene 700 文章
  2. 安生水 348 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. 红橙子 78 文章
  7. rzx 75 文章
  8. CORNERSTONE 72 文章