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

图片
image.png

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

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

图片
image.png

读取数据

library(readxl)
library(ggplot2)
library(tidyverse)
dat<-read_excel("data/20231114/data.xlsx")
dat

作图代码

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元获取

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/373964.html

(0)
联系我们
联系我们
分享本页
返回顶部