首页 > 解决方案 > 将 X 轴标签与 X 轴上的第一个刻度文本左对齐

问题描述

考虑以下示例,

library(ggplot2)
dat <- data.frame(number = c(5, 10, 11 ,12,12,12,13,15,15))
ggplot(dat, aes(x = number)) + geom_histogram()

如何以与X 轴上第一个刻度的文本对齐的方式左对齐 X 轴的标签?

结果应如下所示: 在此处输入图像描述

我正在寻找一种可以轻松推广到其他地块的解决方案。

标签: rggplot2

解决方案


创建绘图对象后,我们可以获得第一个刻度标签的位置

p <- ggplot(dat, aes(x = number)) + 
                      geom_histogram()

i1 <- ggplot_build(p)$layout$panel_ranges[[1]]$x.major[1]
#or
library(magrittr)
i1 <-  p %>% 
          ggplot_build %>% 
          extract2("layout") %>%
          extract2("panel_ranges") %>%
          extract2(1) %>% 
          extract2("x.major") %>%
          extract(1)

然后在theme. 如有必要,最好看看并调整

p + 
   theme(axis.title.x = element_text(hjust = i1- 0.01))

在此处输入图像描述


推荐阅读