考虑以下示例,

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轴上第一个刻度的文本对齐?
结果应如下所示:
r - X轴标签左对齐,X轴上的第一个刻度文本-LMLPHP
我正在寻找一种可以轻松推广到其他地块的解决方案。

最佳答案

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

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


r - X轴标签左对齐,X轴上的第一个刻度文本-LMLPHP

10-08 01:06