R 偏移同一类别的两个几何点

R 偏移同一类别的两个几何点,r,ggplot2,R,Ggplot2,我试图绘制这些数据: data(comp) Habitat Used Available SDU SDA 1 Forest 63.2 85.1 32.0 12.8 2 Open 18.9 3.3 24.8 1.4 3 Edge 15.4 7.8 10.0 4.6 4 Wetland 2.5 1.2 6.1 3.5 5 Developed 0.0 3.5 0.0 6.7 使用此代码: g

我试图绘制这些数据:

data(comp)

Habitat Used Available  SDU  SDA
1    Forest 63.2      85.1 32.0 12.8
2      Open 18.9       3.3 24.8  1.4
3      Edge 15.4       7.8 10.0  4.6
4   Wetland  2.5       1.2  6.1  3.5
5 Developed  0.0       3.5  0.0  6.7
使用此代码:

ggplot()+
  geom_point(data=comp,size=3,fill="white",shape=21,aes(x=Habitat,y=Available))+
  geom_errorbar(data=comp,aes(x=Habitat,ymin=Available-SDA,ymax=Available+SDA,width=.1))+

  geom_point(data=comp,size=3,fill="black",shape=21,aes(x=Habitat,y=Used))+
  geom_errorbar(data=comp,aes(x=Habitat,ymin=Used-SDU,ymax=Used+SDU,width=.1))+

  theme_classic()
这给了我这个 :

好极了

但是,无法读取这些错误条,因为它们是重叠的!如何偏移这两个点(可能用于“左侧”,而“可用”用于右侧),以便正确查看每个错误条

我尝试过位置闪避和几何抖动,而不是几何点,但我无法让它们工作。我尝试过搜索,但没有多大成功

提前谢谢你

将您的数据转换为“长”格式,然后您就可以将使用的和可用的地图映射到颜色美学。这样可以更容易地区分它们,减少所需的代码量,并且可以轻松地避开它们(使用
position\u dodge()
),这样它们就不会重叠:

library(reshape2)
library(ggplot2)

comp.m = melt(comp, id.var="Habitat")
comp.m = data.frame(comp.m[1:10,], err=comp.m[11:20,3])

pd = position_dodge(0.5)

ggplot(comp.m) +
  geom_point(aes(Habitat, value, color=variable), position=pd) +
  geom_errorbar(aes(Habitat, ymin=value - err, ymax=value + err,
                    color=variable), width=0.3, position=pd) +
  theme_classic() +
  labs(color="")