R 在ggplot中同时绘制水平和垂直点范围

R 在ggplot中同时绘制水平和垂直点范围,r,ggplot2,R,Ggplot2,是否有办法在ggplot中的同一绘图上同时绘制水平和垂直点范围。我知道geom_pointrange(…)绘制垂直点范围,水平点范围可以通过coord_flip(…)生成,但我有兴趣将两者放在同一个绘图上 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,

是否有办法在
ggplot
中的同一绘图上同时绘制水平和垂直点范围。我知道
geom_pointrange(…)
绘制垂直点范围,水平点范围可以通过
coord_flip(…)
生成,但我有兴趣将两者放在同一个绘图上

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))

这当然会产生与上面相同的输出,因为
xmin
xmax
参数被忽略。显然,在
ggExtra
中有一个函数
geom\u hpointrange(…)
,但据我所知,这个包已经被删除了。

你要找的是
geom\u 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))

您也可以调用geompoint\u range两次

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

是的!这就行了。看到你的解决方案后,我意识到还有另一种方法可以使用
geom\u errorbar(…)
geom\u errorbarh(…)
height=2*y.range
来去除errorbar胡须。
ggplot(df, aes(x=x, y=y)) +
  geom_pointrange(aes(ymin=y-y.range, ymax=y+y.range)) + 
  geom_pointrange(aes(xmin=x-x.range, xmax=x+x.range))