2017-02-07 26 views
1

所以,我想創建一個ggplot2的條形圖,它將通過第四個變量爲圖的填充着色。通過第四個變量的條形圖顏色

df = data.frame(c(1,1,2,2,3), c("A","B","C","D","E"), c(1:5/4), c("Y", "N", "Y", "N", "N")) 
names(df)[1:4] <- paste("var", 1:4, sep = "") 
df$var1 <- as.factor(df$var1) 
df$var2 <- as.factor(df$var2) 
df$var4 <- as.factor(df$var4) 
ggplot(df, aes(x = var1, y = var3, fill = var2)) + facet_wrap(~var1, scale = "free") + 
    geom_bar(position = "dodge", colour = "black", stat = "identity") + 
    scale_fill_brewer(palette = "Set1") + scale_y_continuous(labels = scales::percent) 

我所試圖做的是設置顯示了在柱狀圖與var4對應的顏色,但仍var2小面圖。我試圖將aes(fill = var4)放入geom_bar部分,但這並沒有給我想要的結果。

我也有一個問題,酒吧被堆疊在一起,似乎改變基於var3是一個字符或數字。爲了說明這一點,var1將是一個問題ID,var2將是一個答案ID,var3將是一個百分比,而var4將是答案是否正確。

+0

你要這樣呢? 'ggplot(df,aes(x = var2,y = var3,fill = var4))+ facet_wrap(〜var1,scale =「free」)+ geom_bar(position =「dodge」,color =「black」,stat = 「identity」)+ scale_fill_brewer(palette =「Set1」)+ scale_y_continuous(labels = scales :: percent)'? –

+1

這正是我正在尋找的。謝謝,我不知道我應該在facet_wrap部分更改它。 – Benji

+0

我也發佈了答案。 –

回答

0

你想要這樣的東西嗎?

ggplot(df, aes(x = var2, y = var3, fill=var4)) + facet_wrap(~var1, scale = "free") + 
    geom_bar(position = "dodge", colour = "black", stat = "identity") + 
    scale_fill_brewer(palette = "Set1") + scale_y_continuous(labels = scales::percent) 

enter image description here