ggplot2|绘制堆叠柱状图

绘图用excel表格
堆叠柱状图

开干

#运行包

library(ggplot2)

library(readxl)

library(dplyr)

#读表,%>%是dplyr包里面的

data <- read_excel('D:/aSbreviflora/data/community/summary/summary.xlsx', sheet = 1,row.names(1)) %>%

  column_to_rownames(.,var = 'phylum')#定义phylum列为行名列

#求和并排序

data$sum <- rowSums(data)

data <- data[order(data$sum, decreasing = TRUE),]

#计算相对丰度

dataabun <- data[1:24]/colSums(data[1:24]) #这里要排除掉sum列,不然最后一列的值是按sum算的

#筛选丰度较高的类群,并合并其余为Others

phylum_top15 <- dataabun[1:15, -ncol(dataabun)]

phylum_top15['Others',] <- 1- colSums(phylum_top15)

#输出筛选结果

write.csv(phylum_top15, 'D:/aSbreviflora/data/community/summary/phylum_top15.csv', quote = FALSE)

导出的数据

#绘图读表,其实是我能力不够,没办法让上面这个表格直接作图,要是有人可以解决这个问题,踢我一脚

data2 <- read.csv('D:/aSbreviflora/data/community/summary/phylum_top15.csv',header = T)

#添加第一列的列名

colnames(data2)[1] <- 'Phylum'

#转化为长格式

length <- pivot_longer(data2, cols = -1, names_to = "variable", values_to = "value")

####这两行是排序用的,主要用来固定我的处理名和图例名

length$Phylum <- factor(length$Phylum, levels = unique(length$Phylum))

length$variable <- factor(length$variable, levels = rev(unique(length$variable)))

#这个包是改颜色用的

library(ggsci)

#绘图,我的处理是y轴,值是x轴,也可以绘图完成后横纵坐标转换

ggplot(length, aes(x = value*100, y = variable, fill=Phylum)) +

  geom_bar(stat = "identity") +

  labs(y =NULL, x = "Relative abundance (%)", fill = "Phylum") +

  theme_minimal() +

  theme( axis.text.x = element_text( hjust = 1),

        panel.grid.major = element_blank(),

        panel.grid.minor = element_blank())+

  scale_fill_d3('category20')##给他添加一个颜色包

绘图就完成了,导出的话,用ggsave()函数就或者用Export,哪个好用用那个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。