Построение предопределенных функций плотности с использованием 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))
Это дает мне что-то вроде этого:
альтернативный текст http://www.cerebralmastication.com/wp-content/uploads/2009/10/density.png
Но я действительно хочу сделать это с GGPLOT2, потому что хочу добавить другие функции, доступные только с GGPLOT2.Похоже, что GGPLOT действительно хочет взять мои эмпирические данные и вычислить для меня плотность.И это меня бесит, потому что мои наборы данных имеют разную длину.Итак, как мне отобразить эти три плотности в GGPLOT2?
Решение
Секрет счастья в 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")