大数跨境
0
0

ggplot2绘制堆砌条形图

ggplot2绘制堆砌条形图 R语言数据分析指南
2021-01-04
0
导读:从数据过滤到图形绘制,通过ggplot2绘制一个美观的堆砌条行图

从数据过滤到图形绘制,通过ggplot2绘制一个美观的堆砌条形图 关注公众号R语言数据分析指南后台回复bar获得实例数据及代码,废话不多说直接看代码

持续分享R中一些优质的资源

rm(list=ls())
pacman::p_load(tidyverse,reshape,RColorBrewer)
colors <-c("#E41A1C","#1E90FF","#FF8C00","#4DAF4A","#984EA3",
           "#40E0D0","#FFC0CB","#00BFFF","#FFDEAD","#90EE90",
           "#EE82EE","#00FFFF","#F0A3FF""#0075DC"
           "#993F00","#4C005C","#2BCE48","#FFCC99",
           "#808080","#94FFB5","#8F7C00","#9DCC00",
           "#426600","#FF0010","#5EF1F2","#00998F",
           "#740AFF","#990000","#FFFF00")

a1 <- read.delim("data.xls",header = T,row.names = 1,
                 check.names = F,sep="\t") %>% 
  mutate(sum= rowSums(.),ID=row.names(.),
         persent = sum/sum(sum)*100,sum=NULL) %>%
  filter(persent >=1) %>% 
  melt() %>% filter(variable !="persent")

上述代码定义一套常用的色系,建议收藏

  • sum= rowSums(.) 按行求和
  • ID=row.names(.) 将行名添加至数据框中
  • persent = sum/sum(sum)*100 按行计算百分比
  • filter(persent >=1) 过滤掉占比小于1%的行
  • melt() 宽表转长表
  • filter(variable !="persent") 剔除含有persent的行
a2 <- "group.xls" %>% read.delim()
a4 <- NULL

for (i in seq_len(nrow(a1))) { 
  a4[i] <- a2[which(a2[, 1] == a1[i, 2]),2] }

a1[,4] <- a4

head(a1)
                            ID variable value   V4
1                   Subgroup 6       A1   997 A_K1
2                 Nocardioides       A1   573 A_K1
3                 Sphingomonas       A1   238 A_K1
4                     Bacillus       A1   377 A_K1
5 Gemmatimonadaceae_uncultured       A1   296 A_K1
6              Rokubacteriales       A1   234 A_K1

将数据与分组文件整合

ggplot(a1,aes(variable,value,fill=ID))+
  geom_bar(stat="identity",position = "fill")+
  facet_grid(.~ V4,scales = "free",space="free_x")+
  labs(x="",y="Proportions")+
  scale_fill_manual(values =colors)+labs(fill="")+
  theme(legend.title=element_blank())+
  scale_y_continuous(expand=c(0,0))+theme_bw()

一张美观的堆砌条形图就这么诞生了

【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读551
粉丝0
内容1.2k