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

如何旋转ggplot的X轴标签解决坐标轴文本重叠可读性差问题

ggplot X轴标签重叠问题修复方案

核心调整参数

你可以通过组合以下几个ggplot参数解决标签重叠问题:

  • 给facet_wrap添加scales = "free_x"参数:让两个分面单独适配各自的X轴标签,不会共享全量标签位置浪费空间
  • 在theme中添加X轴标签旋转配置:将标签旋转45度并右对齐,避免文字横向重叠
  • 可选:如果还是觉得标签太长,可以自定义X轴标签简化文字,比如将Original Sample缩写为Org.Sample

修改后完整绘图代码

library(tidyverse)

df$Treatment <- factor(c("Original sample1", "Original sample2", "Original sample3", "Original sample4", "Original sample5",
                         "treatment1_1","treatment1_2","treatment1_3","treatment1_4"),
                levels = c("Original sample1", "Original sample2", "Original sample3",
                           "Original sample4","Original sample5","treatment1_1","treatment1_2",
                           "treatment1_3","treatment1_4"))

df %>% 
  pivot_longer(-Treatment) %>% 
  mutate(plot = ifelse(str_detect(Treatment, "Original"), 
                       "Original Sample", 
                       "treatment1"),
         treatment = str_extract(Treatment, "\\d+$")) %>% 
  group_by(name) %>% 
  group_split() %>% 
  map(~.x %>% ggplot(aes(x = factor(Treatment), y = value, color = factor(name))) +
        geom_point() +
        # 新增scales = "free_x" 让分面各自适配X轴
        facet_wrap(~plot, scales = "free_x") +
        labs(x = "Treatment", y = "Value", color = "Taxa") +
        theme_bw() +
        # 新增X轴标签旋转配置,angle是旋转角度,hjust=1保证标签末端对齐刻度
        theme(axis.text.x = element_text(angle = 45, hjust = 1))
  )

可选简化标签配置

如果需要进一步缩短标签长度,可以在ggplot图层中添加以下代码自定义标签显示:

scale_x_discrete(labels = ~str_replace(.x, "Original sample", "Org.Smp"))

内容的提问来源于stack exchange,提问作者Eliza R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:07