在ggplot中显示绘图区域的刻度线标注?

问题描述 投票:0回答:1

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

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

enter image description here

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)
r ggplot2 axis
1个回答
1
投票

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

但是,expand=c(0,0)的使用往往会由于标签超出范围而导致切断轴刻度标签。解决办法?只需扩展“界限”即可。在这里,您应该使用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分别表示“顶部”,“右侧”,“底部”和“左侧”,单位可以是几件事情(在这里我建议使用“点”)。话虽如此,我发现这适用于左侧情节的示例案例:

theme(plot.margin = margin(10,15,10,10, "points")
© www.soinside.com 2019 - 2024. All rights reserved.