2010-03-23 12 views
6

Sto iniziando a utilizzare ggplot2. Ho alcuni piccoli (circa 30) dati granulari con un sacco di sovrapposizioni. Né jitter né alpha (trasparenza) sono adatti. Invece uno stripchart con stack e offset lo fa meglio ma non so come farlo in ggplot2. Lo sai?Come si superano i punti sovrapposti senza jitter o trasparenza in ggplot2

Per vedere quale dovrebbe essere il risultato finale, fare clic su questo graphic.

Ecco la sceneggiatura che ho usato alcuni anni fa.

stripchart(SystData$DayTo1Syst~SystData$strain,vertical=TRUE,method="stack",pch=19,offset=.3,xlab="Strain",main="Rapidity of Systemic Disease Onset",ylab="Days post inoculation") 
+0

E 'solo un jitter sull'asse x? –

+0

Sì. Il jitter sarebbe solo sull'asse x ma in realtà non voglio jitter. Preferisco una progressione ordinata da sinistra a destra. – Farrel

+0

Una trama di girasole potrebbe funzionare molto bene qui, anche se non so quanto sia semplice crearli con ggplot2. –

risposta

6
# your data 
df <- data.frame(gp = rep(LETTERS[1:5], each =8), y = sample(1:4,40,replace=TRUE)) 
# calculate offsets 
df <- ddply(df, .(y, gp), transform, offset = (1:length(gp)-1)/20) 
qplot(gp, y, data=df) + stat_identity(aes(as.numeric(gp)+offset)) + theme_bw() 
8

È possibile utilizzare position_dodge.

df <- data.frame(gp = rep(LETTERS[1:5], each =8), 
       y = sample(1:4,40,replace=TRUE)) 
qplot(gp,y,data=df,order=y,position=position_dodge(width=0.5)) 

alt text http://img100.imageshack.us/img100/8760/dodgel.png

+1

Se guardi da vicino, questo non è ciò che Farrel vuole: la posizione schiva sparsi tutti i punti, mentre la figura di esempio si diffonde solo punti sovrapposti – xiechao

4

che si desidera utilizzare geom_dotplot da ggplot2

probabilmente si desidera utilizzare:

ggplot(insert your arguments here) + geom_dotplot(binaxis = "y", stackdir = "center") 

Spero che questo aiuti. I risultati appariranno davvero puliti, che è quello che penso che tu voglia.

Problemi correlati