2010-03-23 9 views
6

Ich fange an, ggplot2 zu verwenden. Ich habe ein paar kleine n (etwa 30 oder so) körnige Daten mit viel Überlappung. Weder Jitter noch Alpha (Transparenz) sind geeignet. Ein Stripchart mit Stack und Offset macht es am besten, aber ich weiß nicht, wie es in ggplot2 geht. Wissen Sie?Wie man überlappende Punkte ohne Jitter oder Transparenz in ggplot2 überwinden

Um zu sehen, was das Endergebnis sein sollte, klicken Sie auf diese graphic.

Hier ist das Skript, das ich vor ein paar Jahren verwendet habe.

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

Ist das nur ein Jitter auf der X-Achse? –

+0

Ja. Der Jitter würde nur auf der X-Achse sein, aber ich möchte eigentlich keinen Jitter haben. Ich bevorzuge eine geordnete Entwicklung von links nach rechts. – Farrel

+0

Ein Sonnenblume-Grundstück könnte hier sehr gut funktionieren, obwohl ich nicht weiß, wie einfach es ist, sie mit ggplot2 zu erstellen. –

Antwort

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

können Sie position_dodge verwenden.

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

Wenn Sie genau hinsehen, ist dies nicht das, was Farrel will: Position Dodge verteilt alle Punkte, während die Beispielfigur nur überplottete Punkte verteilt – xiechao

4

Sie wollen ggplot2 Sie

geom_dotplot von verwenden wahrscheinlich verwenden möchten:

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

Hoffnung, das hilft. Die Ergebnisse werden wirklich sauber aussehen, was ich denke, dass Sie wollen.