2016-01-18 75 views
0

我是R和ggplot2的新手。我有一個數據框,我想在其中一個變量上繪製直方圖,並與同一個變量的子集一起繪製。基本上,我想要做的是以下R - 用ggplot2繪製變量vs變量子集的直方圖

ggplot(df, aes(x = w, fill = area)) + 
geom_histogram(binwidth = 1, position="dodge") 

其中區域將是所有的數據點在我的DF VS與區域內的所有點> 0.我找不到格式化我的數據幀進行正確的方式這發生。目前,這隻能給出分佈面積> 0和麪積= 0.

謝謝。

編輯: 它是如何工作的,現在

w = runif(50,min=1,max=5) 
area = c(rep(0,25), runif(25)) 
df = data.frame(w, area) 

### Wrong 
for (i in 1:50){ 
    if (df$area[i] > 0) { 
    df$size[i] <- "big" 
    }else { 
    df$size[i] <- "small" 
    } 
} 
ggplot(df, aes(x = w, fill = size)) + 
geom_histogram(binwidth = 1, position="dodge") 

我如何劃分的方式,讓我繪製的所有數據點的分佈VS的大的數據幀?

+0

你可以做你的榜樣[重現?](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。它使其他人更容易幫助你。 – Heroka

+1

創建一個新的數據集,只有大數據和覆蓋兩個geom_histogram(data = all,....)+ geom_histogram(data = bigone ....) – MLavoie

回答

1

一種方法是複製你的子集並創建一個新的因子列來標識你的「所有」行和你的「子集」行。然後使用新標籤作爲fill

# Duplicate the "big" data points and add to the end of the data frame 
dfSub <- rbind(df, df[26:nrow(df),]) 
# Create factor column 
dfSub$group <- as.factor(c(rep("all",50),rep("subset",25))) 

ggplot(dfSub, aes(x = w, fill = group)) + 
    geom_histogram(binwidth = 1, position="dodge") 

Plot

+1

這應該工作,謝謝。 – johnblund