如何在ggplot直方图中定义填充颜色?

And*_*eas 8 r ggplot2

我有以下简单数据

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
))
Run Code Online (Sandbox Code Playgroud)

从那我想做一个直方图:

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")
Run Code Online (Sandbox Code Playgroud)

现在 - 我希望垃圾箱根据价值采取colou - 例如,值> 9的垃圾桶变成深灰色 - 其他一切都应该是浅灰色的.

我试图用fill=statusgruppe,scale_fill_grey(breaks=9)等等-但我不能得到它的工作.有任何想法吗?

had*_*ley 14

希望这可以让你开始:

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()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢! - 如果有其他人感兴趣,我就是这样做的: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"))+ (2认同)