2011-09-30 445 views
9

我使用geom_text來標註gglot2中的地塊,我想要使用相對定位而不是絕對。也就是說,無論x軸和y軸的限制如何,我都希望(0.5, 0.5)的位置成爲死點。那可能嗎?ggplot2中geom_text的相對位置?

另外我也可以將相對位置轉換爲絕對位置,如果我有x和y的限制。是否可以從情節中提取這些內容?

回答

5

如果知道圖中數據的範圍,則可以使用ggplot默認情況下使用0.05的附加擴展因子這一事實來計算「true」x和y限制,以便圖的範圍擴展略微超出實際數據值。

指定比例時使用expand = c(mult, add)指定乘數和加法擴展因子,其中mult是乘法因子,依此類推。所以默認設置是expand = c(0,0.05)

+0

是啊,右現在我正在處理數據範圍。我不知道如何指定擴展因子。非常感謝。 – c00kiemonster

+3

我沒有得到如何工作。我面臨這個問題,你能否擴展一些解釋,也許有一個簡單的例子? – Eduardo

1

是的,可以從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") 
+1

順便說一句,'ggplot_build(plot)'的結構已經改變了。在2.1.1中,類似'ggplot_build(plot)$ layout $ panel_ranges [[1]] $ x.range [2]''。 –