2016-07-11 3 views
1

У меня есть данные из 2 групп населения. Я хотел бы получить график гистограммы и плотности как на одном графике. С одним цветом для одной популяции и другим цветом для другого.R: Плотность участка с цветами по группам?

Я попробовал это (пример):

library(ggplot2) 
AA <- rnorm(100000, 70,20) 
BB <- rnorm(100000,120,20) 

valores <- c(AA,BB) 
grupo <- c(rep("AA", 100000),c(rep("BB", 100000))) 
todo <- data.frame(valores, grupo) 


ggplot(todo, aes(x=valores, fill=grupo, color=grupo)) + 
    geom_histogram(aes(y=..density..), binwidth=3)+ geom_density(aes(color=grupo)) 

Но я просто получаю график с одной линией и одним цветом. enter image description here

Я хотел бы иметь разные цвета для двух линий плотности. И, если возможно, гистограммы.

Я сделал это с ggplot2, но база R тоже будет в порядке.

или я не знаю, что я изменился, и теперь я получаю это:

ggplot(todo, aes(x=valores, fill=grupo, color=grupo)) + 
geom_histogram(position="identity", binwidth=3, alpha=0.5)+ 
geom_density(aes(color=grupo)) 

но линии плотности не были построены. enter image description here

или даже странные вещи, как enter image description here

ответ

2

Я предлагаю это ggplot2 решение:

ggplot(todo, aes(valores, color=grupo)) + 
    geom_histogram(position="identity", binwidth=3, aes(y=..density.., fill=grupo), alpha=0.5) + 
    geom_density() 

enter image description here

@skan: Ваша попытка была близка, но вы нанесены частоты вместо значений плотности в гистограмме.

+0

Как насчет того, чтобы увидеть гистограмму с альфой, как и мой второй сюжет, но также с наложенными линиями? – skan

+0

Спасибо. Я всегда смущен тем, где разместить аргумент aes(), внутри ggplot или внутри других терминов. Теперь, как я могу получить более толстые линии плотности? – skan

+0

И последнее, если я хочу добавить сюжет с stat_function (fun = dnorm .....), чтобы добавить информацию о нормальном распределении средств .... Как вам удается получить правильное масштабирование ? – skan

1

Раствор база R может быть:

hist(AA, probability = T, col = rgb(1,0,0,0.5), border = rgb(1,0,0,1), 
     xlim=range(AA,BB), breaks= 50, ylim=c(0,0.025), main="AA and BB", xlab = "") 
    hist(BB, probability = T, col = rgb(0,0,1,0.5), border = rgb(0,0,1,1), add=T) 
    lines(density(AA)) 
    lines(density(BB), lty=2) 

Для альфа я использовал rgb. Но есть больше способов его получить. См. alpha() в пакете scales. Я добавил также параметр breaks для графика AA для увеличения ширины бина по сравнению с группой BB.

enter image description here

+0

Как насчет просмотра гистограммы с альфой, как и мой второй сюжет, но также с наложенными линиями? – skan

+1

@skan см. Мои правки. – Jimbou