2016-06-17 68 views
-2

我想創建一個具有負值和正值的變量的直方圖,並且我想基於變量的符號對條進行着色,即如果如果數字是正數,則數字爲負值,綠色。我使用下面的代碼在GGPLOT2:ggplot2直方圖中的錯誤:基於變量的顏色

ggplot(aes(survey_grouped3$difference),data = survey_grouped3)+geom_histogram(binwidth = 10,fill = ifelse(survey_grouped3$difference >= 0,"green","red")) 

但我收到以下錯誤:

Aesthetics must be either length 1 or the same as the data (26): fill 

誰能幫助我在這?謝謝!

編輯:使用命令

ggplot(survey_grouped3, aes(difference)) +geom_histogram(aes(fill=ifelse(difference > 0,"green","red")), binwidth = 10) +scale_color_identity() 

但着色仍然沒有工作。我附上我得到的輸出。

link to histogram

+0

應預先斌您數據,然後使用'geom_bar(stat ='identitiy')'。就像你有它,你有一個跨越0的酒吧。應該是什麼顏色? – Gregor

+0

非常感謝你的建議。條形圖會更好。爲我的天真抱歉,但你能幫助我使用命令預先裝入數據嗎? – gagandeep91

+0

使用'cut'來定義你的垃圾箱。如果您在R標籤中搜索「bin數據」,則有大量資源。通過共享模擬數據或使用'dput()'共享數據,有人可能會更明確地幫助解決問題[如果您可以重現問題](http://stackoverflow.com/q/5963269/903061)。 – Gregor

回答

0

你必須把顏色部分內aes它從數據映射。此外,您不需要時指定內部aes數據幀:

ggplot(survey_grouped3, aes(difference)) + 
    geom_histogram(aes(fill=ifelse(difference > 0,"green","red")), binwidth = 10) + 
    scale_color_identity() # So "red" and "green" actually map to red and green 

或者,如果你不打算爲任何其他添加到情節:

ggplot(survey_grouped3, aes(difference, fill=ifelse(difference > 0,"green","red"))) + 
    geom_histogram(binwidth = 10) + 
    scale_color_identity()