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
  • 阅读 ( 8575 )
  • 分类:R

0 条评论

请先 登录 后评论
omicsgene
omicsgene

生物信息

691 篇文章

作家榜 »

  1. omicsgene 691 文章
  2. 安生水 340 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. 红橙子 78 文章
  6. xun 76 文章
  7. rzx 74 文章
  8. CORNERSTONE 72 文章