2010-03-30 90 views
8

我有以下簡單的數據如何在ggplot直方圖中定義填充顏色?

data <- structure(list(status = c(9, 5, 9, 10, 11, 10, 8, 6, 6, 7, 10, 
10, 7, 11, 11, 7, NA, 9, 11, 9, 10, 8, 9, 10, 7, 11, 9, 10, 9, 
9, 8, 9, 11, 9, 11, 7, 8, 6, 11, 10, 9, 11, 11, 10, 11, 10, 9, 
11, 7, 8, 8, 9, 4, 11, 11, 8, 7, 7, 11, 11, 11, 6, 7, 11, 6, 
10, 10, 9, 10, 10, 8, 8, 10, 4, 8, 5, 8, 7), statusgruppe = c(0, 
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, NA, 0, 1, 0, 1, 
0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 
1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 
1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0)), .Names = c("status", 
"statusgruppe"), class = "data.frame", row.names = c(NA, -78L 
)) 
從我願意做一個直方圖

ggplot(data, aes(status))+ 
geom_histogram(aes(y=..density..), 
    binwidth=1, colour = "black", 
    fill="white")+ 
theme_bw()+ 
scale_x_continuous("Staus", breaks=c(min(data$status,na.rm=T), median(data$status, na.rm=T), max(data$status, na.rm=T)),labels=c("Low", "Middle", "High"))+ 
scale_y_continuous("Percent", formatter="percent") 

現在 - 我想對箱根據價值採取colou - 例如價值> 9的箱子變得深灰色 - 其他的都應該是淺灰色的。

我試過fill=statusgruppe,scale_fill_grey(breaks=9)等 - 但我不能得到它的工作。有任何想法嗎?

回答

11

這應該可以讓你開始:

ggplot(data, aes(status, fill = ..x..))+ 
    geom_histogram(binwidth = 1) + 
    scale_fill_gradient(low = "black", high = "white") 

ggplot(data, aes(status, fill = ..x.. > 9))+ 
    geom_histogram(binwidth = 1) + 
    scale_fill_grey() 
+1

謝謝 - 我改變了這樣的legendlabel(爲後代) scale_fill_grey(「Name」,breaks = c(FALSE,TRUE),標籤= c(「This」,「That」))。 另一個問題,但: - 是否有可能做一些像..x ..> 7,..x ..> 9(如果我想要三個類別,而不是隻有兩個?) – Andreas 2010-03-31 13:36:16

+1

在這種情況下,使用'cut' 。 – hadley 2010-03-31 14:31:42

+2

謝謝! - 如果有其他人感興趣,這是我如何做到的:fill = cut(.. x ..,c(1,6,10))), binwidth = 1,color =「black」, )+ scale_fill_grey( 「name」,breaks = c(「(1,6)」,「(6,10)」,NA),labels = c(「Low」,「Midle」,「High」))+ – Andreas 2010-03-31 15:37:44

0

如何在y=..density..之後使用fill=..count..fill=I(..count..>9)?你必須修改圖例的標題和標籤,但它有正確的着色。編輯:
看來我誤解了你的問題了一下。如果要根據x座標定義顏色,則可以使用類似的自動變量..x..

+0

謝謝你的好點子!然而 - 伯爵不是我想表現出來的。我希望bin-bar的顏色取決於該bin表示的值(而不是count)。即不是超過9計數的箱子,但是數值大於9. 我不認爲我擅長解釋這一點: -/ 也許這是我的軸標籤混淆了我。我想要的是在標籤「中間」的右側給容器着色 – Andreas 2010-03-30 15:31:56

0

scale_manual怎麼樣?這裏是Hadley網站的link。我已經使用這個函數爲boxplot設置了合適的填充顏色。不知道這是否會與直方圖工作,雖然...