2009-10-06 14 views
7

Ich habe drei Datensätze unterschiedlicher Länge und ich möchte Dichtefunktionen aller drei auf der gleichen Handlung plotten. Dies ist gerade nach vorne mit Basis Grafik:Plotten vordefinierte Dichtefunktionen mit ggplot und R

n <- c(rnorm(10000), rnorm(10000)) 
a <- c(rnorm(10001), rnorm(10001, 0, 2)) 
p <- c(rnorm(10002), rnorm(10002, 2, .5)) 

plot(density(n)) 
lines(density(a)) 
lines(density(p)) 

Was mich so etwas wie dieses gibt:

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/10/density.png

Aber ich will das wirklich mit ggplot2 tun, weil ich andere Funktionen hinzufügen möchten, die nur sind verfügbar mit GGPLOT2. Es scheint, dass GGPLOT wirklich meine empirischen Daten nehmen und die Dichte für mich berechnen will. Und es gibt mir eine Menge Lippen, weil meine Datensätze unterschiedlich lang sind. Also, wie bekomme ich diese drei Dichten in GGPLOT2 zu plotten?

+0

Ich frage mich nur ... warum nennst du immer ggplot2? –

+0

Ich eigentlich nicht ... es ist mein kleiner Finger. Es springt einfach hinüber und drückt ohne meine Erlaubnis die Umschalttaste. :) Ich denke, es ist ein unbewusstes Ergebnis, viele Akronyme den ganzen Tag lang in Großbuchstaben zu schreiben. Ich bin bewusst bemüht, es in Kleinbuchstaben zu belassen. Ich mache das gleiche mit Plyr (sogar als ich tippte, dass ich zurückgehen muss und es Kleinbuchstaben machen). Hadley hat bereits meine Chops für das Mischen von case + Unterstreichung in meinen Variablennamen in meinem Code zerstört. Ihr Jungs werdet mich sauberer und leichter lesen, wenn ich nicht vorsichtig bin! –

Antwort

12

Das Geheimnis zum Glück in ggplot2 ist alles im „long“ zu setzen (oder was ich Matrix orientierte Menschen erraten nennen würden „spärlich“) Format:

df <- rbind(data.frame(x="n",value=n), 
      data.frame(x="a",value=a), 
      data.frame(x="p",value=p)) 
qplot(value, colour=x, data=df, geom="density") 

Wenn Sie Farben nicht wollen:

qplot(value, group=x, data=df, geom="density") 
+0

hast du meine Nacht so viel besser gemacht. Ich hatte damit zu kämpfen und konnte es nicht herausfinden. Ich danke dir sehr. –