vlambda博客
学习文章列表

技术贴 | R语言:ggplot画柱形图、排序、着色

点击蓝字↑↑↑“微生态”,轻松关注不迷路

技术贴 | R语言:ggplot画柱形图、排序、着色

本文由阿童木根据实践经验而整理,希望对大家有帮助。

原创微文,欢迎转发转载。


ggplot2函数包ggplot函数geom_bar参数画柱形图。主要方法:利用apply(df, FUN=sum)求和;利用df[order(df$sum,decreasing=T),]倒序;利用scale_x_discrete(limits=factor())设置横轴排序;下面有随机数据绘制柱形图。

一、 输入数据

代码:

set.seed(1995)  
# 随机种子
data=matrix(abs(round(rnorm(100, mean=1000, sd=500))), 1010)  
# 随机正整数,20行,20列
colnames(data)=paste("Sample"1:10, sep=".")  
# 列名-细菌
rownames(data)=paste("Bin"1:10, sep=".")

技术贴 | R语言:ggplot画柱形图、排序、着色

图1

二、求和、排序

参数:

apply(df, n, FUN=sum)

n=1按行求和

n=2按列求和

代码:

sum=apply(data, 1, sum)  # 求和
bin=rownames(data)  # 提取列名
data_sum=data.frame(bin, sum)  # 新建数据框
data_sum=data_sum[order(data_sum$sum, decreasing=T),]  # 倒序

技术贴 | R语言:ggplot画柱形图、排序、着色

图2

三、ggplot画图

代码:

library(ggplot2)
ggplot(data_sum, aes(x=bin, y=sum)) +
geom_bar(stat="identity", fill="blue")+
labs(x="", y="Bin abundance")+
scale_y_continuous(expand=c(00))+
# 调整y轴属性
scale_x_discrete(limits=factor(data_sum[,1])) +
# 设第一列为因子,不排序
theme(axis.text.x=element_text(angle=45, hjust=1)) +
# angle:调整横轴标签倾斜角度
theme(panel.grid=element_blank(), panel.background=element_rect(color='black', fill='transparent'))
# 调整背景

技术贴 | R语言:ggplot画柱形图、排序、着色

图3

、设置颜色和图例

代码:

ggplot(data_sum, aes(x=bin, y=sum, fill=bin)) +
geom_bar(stat="identity")+
labs(x="", y="Bin abundance", fill="Bin ID")+
scale_y_continuous(expand=c(00))+
# 调整y轴属性
scale_x_discrete(limits=factor(data_sum[,1])) +
# 设第一列为因子,不排序
theme(axis.text.x=element_text(angle=45, hjust=1)) +
# angle:调整横轴标签倾斜角度
theme(panel.grid=element_blank(), panel.background=element_rect(color='black', fill='transparent'))


技术贴 | R语言:ggplot画柱形图、排序、着色

图4





技术贴 | R语言:ggplot画柱形图、排序、着色你可能还喜欢技术贴 | R语言:ggplot画柱形图、排序、着色





微生态科研学术群期待与您交流更多微生态科研问题

(联系微生态老师即可申请入群)

了解更多菌群知识,请关注“微生态”。