2016-05-12 4 views
1

Я пытаюсь построить эти данные:Взаимозачет два geom_points одной и той же категории

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

, который дает мне это graph:

Отлично!

Однако эти ошибки не могут быть прочитаны, поскольку они перекрываются! Как я могу компенсировать две точки (возможно, они использовались для «левого» и «доступного» справа), чтобы я мог правильно видеть каждую панель ошибок?

Я пробовал position_dodge и geom_jitter вместо geom_point, но я не могу заставить их работать. Я пробовал искать, но у меня не было большого успеха.

Спасибо заранее!

ответ

1

Преобразуйте данные в «длинный» формат, и затем вы можете использовать Используемый и Доступный для цветовой эстетики. Это делает его легче различать их, уменьшает количество кода, необходимого, и делает его легко уклоняться от них (с помощью position_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="") 

enter image description here

+0

Вау, спасибо большое , Это полностью сработало. – user32690

Смежные вопросы