1

我的示例数据框如下:

a <- structure(list(Middlepoint = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 
12, 13, 14, 15, 16, 17, 18, 19, 1, 1, 5, 5, 4, 4, 3, 7, 18, 8, 
8, 8, 8, 8, 8.5, 8.5)), .Names = "Middlepoint", class = "data.frame", row.names = c(NA, 
-34L))

我想创建binwidth = 1如下特征的直方图:

library(ggplot2)
library(scales)
ggplot(a, aes(x = Middlepoint)) + 
  geom_histogram(aes(y = ..density.., fill=..density..), binwidth = 1) + 
  scale_x_continuous(breaks=0:19) + 
  scale_fill_continuous(low = "red", high = "green")

现在,我不知道如何只用绿色为密度最高的箱(这里是箱 8-9)和所有其他箱用红色(没有渐变,只有纯色)着色。

正如您从上面的代码中看到的那样,我最接近预期结果的方法是使用scale_fill_continuous()接近但不完全是我希望看到的组件。我尝试了 ggplot 等线程更改填充颜色而不会丢失颜色渐变R-ggplot2 直方图条件填充颜色。任何想法如何通常自定义填充直方图的箱?

4

1 回答 1

3

您需要将fill参数设置为 a factor,它需要 2 个级别:一个用于所有密度值低于 themax和一个用于最大密度:

ggplot(a, aes(x = Middlepoint)) + 
  geom_histogram(aes(y    = ..density.., 
                     fill = cut(..density.., c(0, sort(..density.., TRUE)[1:2]))), 
                 binwidth = 1) + 
  scale_fill_manual("", values = c("red", "green")) +
  theme_minimal()

直方图

于 2016-01-26T09:21:01.713 回答