左对齐X轴标签,X轴上有第一个刻度文本

时间:2018-05-06 15:06:17

标签: r ggplot2

考虑以下示例,

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轴上第一个刻度的文本对齐?

结果应如下所示: enter image description here

我正在寻找一种可以很容易地推广到其他情节的解决方案。

1 个答案:

答案 0 :(得分:4)

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

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))

enter image description here