条形图很常用,excel就能画,但很多时候不仅要看绝对数量,还要看其在总体中的占比,这时excel就无能为力了(除非一个一个手动添加),今天分享一下用ggplot2绘制这种带百分百的条形图,代码很简单,但省去了你自己调图的时间~
示例
image.png代码
#读入文件
data <- read.table('data.txt', header=T)
#预处理
data$var <- as.character(data$var)
data$var <- factor(data$var, levels=data$var[seq(20, 1, -1)])
#画图
pdf('example.pdf', width=12, height=6)
ggplot(data, aes(x=var, y=ratio,fill="blue")) + geom_bar(stat="identity", position=position_dodge2(reverse=T)) +
coord_flip() + scale_y_reverse(expand=expand_scale(add=c(0.05, 0))) + scale_x_discrete(position="top") +
theme(panel.grid.major.x=element_blank(), legend.position="top") +
xlab("") + ylab("carrier ratio (%)") + scale_fill_manual(values=c("#8DA0CB", "#FC8D62"), name="") +
guides(fill=F) + geom_text(aes(label=paste(format(round(ratio, 2), nsmall=2), '% (', num, ')', sep="")), position=position_dodge2(0.9, reverse=T), size=3, hjust=1.2)
dev.off()
输入文件格式
示例如下:
image.png
注:需要排好序,且ratio的单位是%
如果你得到了帮助,不要吝啬留下你的赞哦~
网友评论