R语言分组条形图X轴设置双行不同字号标签的实现问题
解决方法
借助ggtext包实现X轴标签的富文本渲染,即可单独控制分组数量标注的字号,无需手动拼接换行文本。
调整步骤
- 先安装并加载
ggtext包 - 为每个员工分组生成带字号控制的富文本标签
- 在ggplot主题中开启X轴文本的markdown解析能力
完整修改后代码
library(tidyverse) library(ggplot2) library(ggtext) # 新增加载富文本渲染包 data <- read.csv("Emp.txt", sep = "\t" , header = TRUE) df1<-tibble(data) df1<- mutate(df1, emp_class = cut(Age, breaks = c(0, 19, 22, 25, 28, 31, 34, 52, 75), labels = c('(0-19)', '(20-22)', '(23-25)', '(26-28)', '(29-31)', '(32-34)', '(35-52)', '(53-75)'))) df1 <- df1 %>% group_by(Emp_group) %>% add_count() # 新增:生成每个分组对应的富文本标签,可自定义数量部分的字号 group_labels <- df1 %>% distinct(Emp_group, n) %>% mutate( label = paste0(Emp_group, "<br><span style='font-size:12px'>(n=", n, ")</span>") ) %>% pull(label, name = Emp_group) my_ggp <- ggplot(df1, aes(x=as.factor(Emp_group), fill=as.factor(emp_class)))+ geom_bar(aes(y=..count../tapply(..count.., ..x.. ,sum)[..x..]*100), position="dodge") + ylab('% Employes') + xlab("") + labs(fill = "Age group") + # 新增:关联自定义的富文本标签 scale_x_discrete(labels = group_labels) + # 主题中开启X轴文本的markdown解析,可调整lineheight控制两行间距 theme( text = element_text(size = 20), axis.text.x = element_markdown(lineheight = 1.2) ) my_ggp
参数调整说明
- 标签中
font-size:12px的数值可以按需修改,控制数量标注的字号 element_markdown里的lineheight参数可以调整分组名称和数量标注两行的垂直间距
内容的提问来源于stack exchange,提问作者BeginneR
相关产品推荐
相关产品推荐

