我正在使用gglot2
中的geom_text
注释图表,我想使用相对位置而不是绝对位置。也就是说,我想要一个(0.5, 0.5)
的位置,无论x和y轴的限制如何,都是居中的。这个可能吗?
或者,如果我有x和y轴的限制,当然也可以将相对位置转换为绝对位置。从图中提取这些限制是否可能?
ggplot
使用0.05的加性扩展因子,使得图形的范围略微超出实际数据值。 您可以在指定比例尺时使用expand = c(mult, add)
来指定乘法和加法扩展因子,其中mult
是乘法因子等等。 因此,默认设置为expand = c(0,0.05)
。是的,可以从ggplot2-plot中提取x和y限制。以下函数返回ggplot2 plot对象中心的x和y坐标:
center.position <- function(plot) {
xpos <- (ggplot_build(plot)$panel$ranges[[1]]$x.range[2]-ggplot_build(plot)$panel$ranges[[1]]$x.range[1])/2+ggplot_build(plot)$panel$ranges[[1]]$x.range[1]
ypos <- (ggplot_build(plot)$panel$ranges[[1]]$y.range[2]-ggplot_build(plot)$panel$ranges[[1]]$y.range[1])/2+ggplot_build(plot)$panel$ranges[[1]]$y.range[1]
return(data.frame(x=xpos,y=ypos))
}
如果您的x-Data是以POSIXct格式表示的,则仍需进行转换:
center.coords <- center.position(myplot)
myplot <- myplot + annotate("text",x=as.POSIXct(center.coords$x,origin="1970-01-01"), y=center.coords$y, label="X")
ggplot_build(plot)
的结构已经改变了。在2.1.1版本中,它大致是这样的:ggplot_build(plot)$layout$panel_ranges[[1]]$x.range[2]
。 - Maxim.K