我正在使用geom_text
来注释gglot2
中的情节,我希望使用相对定位而不是绝对。也就是说,无论x轴和y轴的限制如何,我都希望(0.5, 0.5)
的位置为死点。这可能吗?
如果我有x和y限制,我当然可以将相对位置转换为绝对位置。是否有可能从情节中提取出来?
答案 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")