在 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")
我正在使用 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")