看见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