gomplot2中geom_text的相对定位?

时间:2011-09-30 14:17:08

标签: r ggplot2 axis limits

我正在使用geom_text来注释gglot2中的情节,我希望使用相对定位而不是绝对。也就是说,无论x轴和y轴的限制如何,我都希望(0.5, 0.5)的位置为死点。这可能吗?

如果我有x和y限制,我当然可以将相对位置转换为绝对位置。是否有可能从情节中提取出来?

2 个答案:

答案 0 :(得分:7)

如果您知道绘图中数据的范围,则可以使用ggplot默认使用0.05的加法扩展因子的事实计算“真实”x和y限制,以便图表略微超出实际数据值。

使用expand = c(mult, add)指定比例时,您可以指定和乘法和加法扩展因子,其中mult是乘法因子,依此类推。因此默认设置为expand = c(0,0.05)

答案 1 :(得分:2)

是的,可以从ggplot2-plot中提取x和y限制。此函数返回ggplot2绘图对象中心的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")