R语言ggplot2簇状柱形图和堆积柱形图组合到一起的效果

2023-11-16 19:15:26 浏览数 (1)

image.png

在一个交流群看到有人问这个图怎么实现,今天的推文我们来介绍一下如何用R预言的ggplot2实现上面这个图。

首先是准备作图数据,作图数据整理成如下格式,我这里用excel存储

image.png

读取数据

代码语言:javascript复制
library(readxl)
library(ggplot2)
library(tidyverse)
dat<-read_excel("data/20231114/data.xlsx")
dat

作图代码

代码语言:javascript复制
ggplot() 
  geom_segment(data=data.frame(y=seq(0,200,by=20),
                               yend=seq(0,200,by=20)),
               aes(x=0.5,xend=5.5,y=y,yend=yend),
               color="gray") 
  geom_bar(data=dat,aes(x=x,y=value,fill="Total value"),stat="identity") 
  geom_bar(stat="identity",position = "dodge",
           data=dat,aes(x=x,y=value,fill=group)) 
  theme_bw(base_size = 20) 
  theme(panel.grid = element_blank(),
        legend.position = "top",
        legend.title = element_blank(),
        panel.border = element_blank(),
        axis.ticks = element_blank(),
        axis.line.x = element_line()) 
  scale_y_continuous(expand = expansion(mult=c(0,0)),
                     limits = c(0,200),
                     breaks = seq(0,200,by=20)) 
  scale_x_discrete(labels=c(2000,"01","02","03","04")) 
  labs(x=NULL,y=NULL) 
  geom_text(data=dat %>% group_by(x) %>% summarise(sum_value=sum(value)),
            aes(x=x,y=sum_value,label=sum_value),
            vjust=-1,size=5) 
  scale_fill_manual(values = c("#f8766d","#a3a500","#00bf7d","#00b0f6","gray"))

image.png

背后灰色的柱子是堆积柱形图,只不过没有按照分组添加颜色,统一填充了同样的颜色灰色。前面的柱子是簇状柱形图

示例数据和代码可以给推文打赏1元获取

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

image.png

0 人点赞