着色包含特定数字的bin

时间:2017-01-19 20:07:31

标签: r ggplot2

library(ggplot2)

df <- data.frame(x = runif(100))
ggplot(df, aes(x)) + geom_histogram(binwidth = 0.1)

enter image description here

如果我想将包含特定值的bin设置为“red”而其余部分变为“blue”,该怎么办?比如说值0.5(将在[0.5,0.6]箱中)?

2 个答案:

答案 0 :(得分:0)

我用这个

得到了正确的效果
df <- data.frame(x = runif(100))
df$y <- ifelse(df$x > 0.46 & df$x < 0.65, df$x, NA)

ggplot(df, aes(x)) + 
     geom_histogram(binwidth = 0.1, fill = 4) +
     geom_histogram(aes(y), binwidth = 0.1, fill = 2, data = df)

答案 1 :(得分:0)

好的,我想我明白了。一直以来,我都错了。显然,它以价值为中心(而不是它的起点)。

因此,如果binwidth为0.1,则0.5 bin将包含介于(0.45,0.55)之间的值。我认为它是0.5到0.6,这就是为什么我一直得到半值。谢谢你的帮助!

在@ user127649给出的示例中,如果将其更改为:

df <- data.frame(x = runif(100))
df$y <- ifelse(df$x > 0.45 & df$x < 0.55, df$x, NA) <-- adjust the binwidth here. This is where I got the idea that it's centered around the breaks. 

ggplot(df, aes(x)) + 
     geom_histogram(binwidth = 0.1, fill = 4) +
     geom_histogram(aes(y), binwidth = 0.1, fill = 2, data = df)