R语言作图挑战:你会采用什么方式来复现这种文本在柱子上方的柱形图?

2023-10-28 17:40:28 浏览数 (2)

看见R语言数据可视化大佬的twitter

image.png

image.png

挑战:你会采用什么方式来复现这种文本在柱子上方的柱形图

今天的推文我给出自己的方案,欢迎大家留言讨论给出自己的方案

我的思路是在输入数据上做准备,我把数据整理成如下格式

这里是5个柱子,我准备10个柱子的数据,其中5个柱子的值设置为0

我整理的数据格式如下

image.png

作图代码

代码语言:javascript复制
library(readxl)
library(ggplot2)
library(ggh4x)

dat<-read_excel("data/20231027/20231027.xlsx")
dat

ggplot(data = dat,aes(x=x,y=y)) 
  geom_col(aes(fill=group),show.legend = FALSE) 
  geom_text(aes(x=0,y=y,label=label),
            hjust=0,vjust=1,size=10) 
  geom_text(aes(x=x,y=y,label=scales::percent(label1,accuracy = 0.1)),
            hjust=c(rep(1,9),0),
            size=5,
            color=c(rep("white",9),"black"),
            fontface="bold") 
  theme_bw(base_size = 20) 
  theme(panel.grid = element_blank(),
        panel.border = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        axis.line.x = element_line()) 
  labs(x="Proportion",y=NULL) 
  guides(x=guide_axis_truncated(trunc_lower = 0,
                                trunc_upper = 40)) 
  scale_x_continuous(labels = function(x){paste0(x,"%")}) 
  scale_fill_manual(values = c("A"="#1d7859","B"="#7f7f7f","D"="white"))

image.png

image.png

0 人点赞