Come si fa a superare i punti di sovrapposizione senza jitter o la trasparenza in ggplot2

StackOverflow https://stackoverflow.com/questions/2502485

  •  21-09-2019
  •  | 
  •  

Domanda

Sto iniziando a usare ggplot2. Ho qualche piccolo n (circa 30 o giù di lì) di dati granulari con un sacco di sovrapposizione. Né jitter né alfa (trasparenza) sono adatti. Invece uno stripchart con una pila e offset farlo meglio, ma non so come farlo in ggplot2. Sai?

Per vedere ciò che il risultato finale dovrebbe essere cliccare su questo grafica .

Ecco lo script che ho usato qualche anno 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")
È stato utile?

Soluzione

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

Altri suggerimenti

È 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

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 sembrano davvero pulito, che è quello che penso che si desidera.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top