2009-10-06 5 views
7

У меня есть три набора данных различной длины, и я хотел бы построить функции плотности всех трех на одном и том же участке. Это прямо вперед с базовой графики:Построение предопределенных функций плотности с использованием ggplot и 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)) 

Что дает мне что-то вроде этого:

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

Но я действительно хочу сделать это с GGPLOT2, потому что я хочу, чтобы добавить другие функции, которые только доступный с помощью GGPLOT2. Кажется, что GGPLOT действительно хочет взять мои эмпирические данные и рассчитать плотность для меня. И это дает мне кучу губ, потому что мои наборы данных имеют разную длину. Итак, как мне получить эти три плотности для построения в GGPLOT2?

+0

Просто интересно ... почему вы всегда капитализируете ggplot2? –

+0

Я на самом деле не ... это мой мизинец. Он просто прыгает туда и нажимает клавишу переключения без моего разрешения. :) Я думаю, что это бессознательный результат набирать много аббревиатур в шапках в течение всего дня. Я прилагаю все усилия, чтобы оставить его в нижнем регистре. Я делаю то же самое с plyr (даже когда я набрал, что мне нужно отступить и сделать его более строгим). Хэдли уже разобрал мои отбивные для смешивания case + underscore в моих именах переменных в моем коде. Вы, ребята, сделаете меня более аккуратным и легким для чтения, если я не буду осторожен! –

ответ

12

Секрет счастья в ggplot2, чтобы поставить все на «длинный» (или то, что я думаю, Матричные ориентированные люди назвали бы «разреженный») Формат:

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") 

Если вы не хотите цвета:

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

ты сделал мою ночь намного лучше. Я боролся с этим и не мог понять. Огромное спасибо. –