You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:57:04