Como posso 'esquivar' a posição de geom_point no ggplot2?

19

Estou usando o ggplot2 no R para criar gráficos como os seguintes:

insira a descrição da imagem aqui

As barras de erro se sobrepõem, o que parece muito confuso. Como posso separar as barras de erro para diferentes índices? Eu usei position = "dodge", mas parece não estar funcionando. Aqui está a parte principal do meu código:

plot =  ggplot(data,aes(x=ntrunc,y=beta_best,group=ntrunc,colour=INDEX))
       +geom_point(aes(shape=detectable),na.rm=TRUE,position="dodge") 
        +geom_errorbar(aes(x=ntrunc,ymax=beta_high,ymin=beta_low),na.rm=TRUE,position="dodge")
ycc
fonte
1
Você tentou valores diferentes de "esquivar"? Por exemplo algo assim: position = position_dodge(width = 0.90). Veja também este post .
COOLSerdash
Obrigado pelo seu exemplo. No entanto, tentei apenas valores diferentes de largura e ainda não funciona.
YCC
2
É difícil encontrar soluções sem o conjunto de dados original. Mas tenho uma pergunta: por que seus valores e os "grupos" são os mesmos? O que é ? Não deveria ser ? xntruncgroupINDEX
COOLSerdash
Funciona agora depois que eu mudei group = "INDEX". Eu acho que não entendi o significado de 'grupo'. Obrigado @COOLSerdash
ycc

Respostas:

12

O grupo deve = INDEX em vez de ntrunc nos aes.

plot =  ggplot(data, aes(x=ntrunc, y=beta_best, group=INDEX, colour=INDEX)) +
   geom_point(aes(shape=detectable), na.rm=TRUE, position="dodge") +
   geom_errorbar(aes(x=ntrunc, ymax=beta_high, ymin=beta_low), na.rm=TRUE, position="dodge")

O enredo parece melhor agora.

insira a descrição da imagem aqui

ycc
fonte
7
Isto não funcionou para mim até que eu useigeom_point(aes(shape=detectable),na.rm=TRUE, position=position_dodge(width=0.3))
Nova
Seria ótimo obter um exemplo de dados aqui, porque não consigo reproduzir seu resultado.
Léo Léopold Hertz,
1
@Nova meu palpite é que a resposta foi quebrado quando ggplot2passou de versão 0.9.Xpara 1.Xou2.X
Richard Erickson