2013-12-16 75 views
4

是否有方法在ggplot的同一圖上繪製水平垂直點範圍。我知道geom_pointrange(...)繪製垂直點範圍,水平點範圍可以用coord_flip(...)生成,但我有興趣將兩者放在一起。在ggplot中同時繪製水平和垂直點範圍

set.seed(1) 
df <- data.frame(x=sample(1:10,10),y=sample(1:10,10), x.range=1, y.range=2) 
library(ggplot2) 
ggplot(df) + 
    geom_pointrange(aes(x=x, y=y, ymin=y=y.range, ymax=y+y.range)) 

我正在尋找這樣的事情:

ggplot(df) + 
    geom_pointrange(aes(x=x, y=y, 
         ymin=y-y.range, ymax=y+y.range, 
         xmin=x-x.range, xmax=x+x.range)) 

這當然會產生與上述相同的輸出,因爲xminxmax參數被忽略。顯然,在ggExtra中有(函數geom_hpointrange(...)),但是據我所知,此包已被拉出。

回答

7

geom_errorbarh你在找什麼?

ggplot(data = df, aes(x = x, y = y)) + 
    geom_pointrange(aes(ymin = y - y.range, ymax = y + y.range)) + 
    geom_errorbarh(aes(xmax = x + x.range, xmin = x - x.range, height = 0)) 

enter image description here

+0

是的!這將做到這一點。看到你的解決方案後,我意識到還有另一種方法,使用'geom_errorbar(..)'和'width = 2 * x.range','geom_errorbarh(...)'使用'height = 2 * y.range' 。 – jlhoward

+0

用'height = 0'來移除錯誤指示符的好方法。 – fry