防止自定义文本增加绘图大小

时间:2019-02-09 23:04:52

标签: r ggplot2

我在情节上写了一些文字,效果很好。现在我意识到,如果将文本放在y轴的下方,则绘图空间会以某种方式变大。这不是我想要的。以下2个图说明了此问题。第一个将文本放置在y = 0,而第二个将文本放置在y = min-0.25,大约是绘图空间垂直开始的位置。是否有可能像第一个绘图一样保留绘图空间,但仍要写在底部?如果没有打算调整的方法,那么我也很满意解决方法。

set.seed(12)
test <- data.table(x = rnorm(29*2),var=c(rep("x1",29),rep("x2",29)),
                   time=rep(seq(as.Date("1983/12/31"),as.Date("2011/12/31"), "year"),2))
library(ggplot2);library(scales)
ggplot(data=test,aes(x=time, y=x, colour=var)) +
  geom_line() + scale_x_date(date_labels="%Y",date_breaks = "3 years") +
  geom_text(aes(x=as.Date("1988-04-30"), label="Text which does not increases space", y=0,
                fontface="plain"), angle=60, colour="black",vjust=0,hjust=0,size = 4)

ggplot(data=test,aes(x=time, y=x, colour=var)) +
  geom_line() + scale_x_date(date_labels="%Y",date_breaks = "3 years") +
  geom_text(aes(x=as.Date("1988-04-30"), label="Text which increases space", y=min(test[,x])-0.25,
                fontface="plain"), angle=60, colour="black",vjust=0,hjust=0,size = 4)

1 个答案:

答案 0 :(得分:1)

与任何其他几何图形一样,geom_text在这种情况下会扩大绘图区域。然后,必须使用ylim(range(test$x))手动限制y轴。但是,这还不够,因为文本将无法完全显示,因此ggplot会完全删除它。要解决此问题,我们需要clip = "off"。因此,添加

coord_cartesian(clip = "off", ylim = range(test$x))

给予

enter image description here

现在轴不变。