我使用geom_text
来标注gglot2
中的地块,我想要使用相对定位而不是绝对。也就是说,无论x轴和y轴的限制如何,我都希望(0.5, 0.5)
的位置成为死点。那可能吗?ggplot2中geom_text的相对位置?
另外我也可以将相对位置转换为绝对位置,如果我有x和y的限制。是否可以从情节中提取这些内容?
我使用geom_text
来标注gglot2
中的地块,我想要使用相对定位而不是绝对。也就是说,无论x轴和y轴的限制如何,我都希望(0.5, 0.5)
的位置成为死点。那可能吗?ggplot2中geom_text的相对位置?
另外我也可以将相对位置转换为绝对位置,如果我有x和y的限制。是否可以从情节中提取这些内容?
如果知道图中数据的范围,则可以使用ggplot
默认情况下使用0.05的附加扩展因子这一事实来计算“true”x和y限制,以便图的范围扩展略微超出实际数据值。
指定比例时使用expand = c(mult, add)
指定乘数和加法扩展因子,其中mult
是乘法因子,依此类推。所以默认设置是expand = c(0,0.05)
。
是的,可以从ggplot2图中提取x和y限制。该函数返回x和一个GGPLOT2剧情对象中心的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-数据是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]''。 –
是啊,右现在我正在处理数据范围。我不知道如何指定扩展因子。非常感谢。 – c00kiemonster
我没有得到如何工作。我面临这个问题,你能否扩展一些解释,也许有一个简单的例子? – Eduardo