我使用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