在 ggplot 的绘图区域外显示刻度标签?

Show tick label outisde of plot area in ggplot?

我正在使用 ggplot 创建一个包含区域填充值的多面板图。我想精确地在最大 x 值(年份)处截断图表并仍然标记那一年。当我指定确切的值时,它不会打印最终值(左侧显示 breaks 设置值 2001、2005 和 2010 时的结果)。我还想指定设置了哪些刻度值(默认值没有意义,请参见右侧的打印示例)并且我已将轴刻度标签设置为包括 x 轴上的最后一个值,但它没有完全打印(它在绘图区域的边缘被切断)。我怎样才能让 ggplot 显示我通过 breaks 设置的最后一个值?以下代码用于此处显示的虚拟示例。

编辑:将代码中的中断更正为 2001、2005、2010(不是 2100)。

set<-data.frame(year=c(2001:2010), values=c(1:10))
g1<-ggplot(set, aes(x=year,y=values))+
      geom_area(data=set)+
      theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
            panel.background = element_blank(), 
            axis.line = element_line(colour = "black"))+
      scale_x_continuous(expand=c(0, 0), breaks=c(2001, 2005, 2010)) + #label at 25-year intervals
      scale_y_continuous(expand = c(0, 0))


g2<-ggplot(set, aes(x=year,y=values))+
  geom_area(data=set)+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), 
        axis.line = element_line(colour = "black"))+
  scale_x_continuous(expand=c(0, 0)) + #label at 25-year intervals
  scale_y_continuous(expand = c(0, 0))

ggarrange(g1, g2, nrow=1, ncol=2)

也感谢 @Tjebo 的建议...固有问题在于您的 breaks 参数包含错字 :)。使用 2010 而不是 2100 应该可以正常工作。哎呀!

但是,使用 expand=c(0,0) 往往会导致轴刻度标签被切断,因为标签超出了边界。解决办法是什么?只需扩展 "bounds"。在这里,您应该使用 theme(plot.margin=... 将边距稍微推开一点。 Some information can be found here to guide you,但实际上只是玩弄边距,注意格式通常是 theme(plot.margin = margin(t, r, b, l, unit))

其中:t、r、b、l分别代表"top"、"right"、"bottom"、"left",单位可以是几个东西(这里我建议 "points")。话虽如此,我发现这适用于左侧情节的示例案例:

theme(plot.margin = margin(10,15,10,10, "points")