2015-09-23 15 views
2

Я хочу иметь график, где я показываю гистограмму одного набора данных и график плотности другого набора данных.Гистограмма смешивания и график плотности в ggplot2 разных наборах данных

Я могу сделать как гистограммы, так и графики плотности, но я не могу убрать нежелательные графики гистограммы/плотности.

Например:

library(ggplot2) 
     set.seed(1234); dat <- data.frame(cond = factor(rep(c("A","B"), each=200)), 
       rating = c(rnorm(200),rnorm(200, mean=.8))) 

    # Overlaid histograms 
    ggplot(dat, aes(x=rating, fill=cond)) + 
    geom_histogram(aes(y=..density..),binwidth=.5, alpha=.5, position="identity") + geom_density(alpha=.3) 

дает мне сюжет, который выглядит следующим образом: enter image description here

Я хочу, чтобы избавиться от (например) красная гистограмма и сюжет голубой плотности, в результате чего меня с голубой гистограммой и красной плотностью.

Любая помощь была бы высоко оценена!

ответ

3

Вот как бы я это сделал, разделив вызовы в слоях ggplot отдельными наборами данных, чтобы каждый слой имел дело только с тем, что вы хотите. Я сделал устанавливают разные данные, чтобы сделать его более очевидным .:

library(ggplot2) 
set.seed(1234); 
dat <- data.frame(cond = factor(rep(c("A"), each=200)), 
           rating = c(rnorm(200),rnorm(200, mean=.8))) 
dat2 <- data.frame(cond = factor(rep(c("B"), each=200)), 
       rating = c(rnorm(200),rnorm(200, mean=.6))) 

# Overlaid histograms 
ggplot() + 
    geom_histogram(data = dat, aes(x=rating, fill=cond, y=..density..),binwidth=.5, alpha=.5, position="identity") + 
    geom_density(data = dat2, aes(x=rating, fill=cond), alpha=.3) 

Overlaid plots with two different datasets

+0

Мне нравится этот лучше, чище. – atiretoo

+0

Спасибо за ваш ответ –

1

Это не сохраняет цвета, но в общем то, что вы хотите сделать, это иметь различные данные = аргумент для общего сюжета и один из геых-х:

ggplot(dat[dat$cond=="A",], aes(x=rating)) + 
geom_histogram(aes(y=..density..),binwidth=.5, alpha=.5, position="identity") + 
geom_density(alpha=.3,data=dat[dat$cond=="B",]) 

enter image description here

+0

ИДЕАЛЬНЫМ! Спасибо, это было именно то, что мне нужно! –

Смежные вопросы