更改直方图条颜色大于某个值

时间:2011-08-11 14:14:14

标签: r histogram

到目前为止,我已设法在示例here

后的直方图中更改单个条形图的颜色
test <- rnorm(100);
h <- hist(test);
b <- cut(1, h$breaks);
clr <- rep("grey", length(h$counts));
clr[b] <- "red";
plot(h, col=clr);

我希望能够改变超过某个x轴值的直方图区间的颜色 - 例如在示例中的分布函数中大于1。我遇到麻烦的部分原因是我并不完全理解cut()返回的因素。

2 个答案:

答案 0 :(得分:8)

从根本上说,您希望test上的逻辑选择器不在cut上。

以下是剪切对象的样子:

> bks <- cut(test,10)

级别为字符类型:

  

水平(BKS)        1“(-2.53,-2.01]”“( - 2.0,-1.5]”“( - 1.5,-0.978]”“( - 0.978,-0.459]”        [5]“( - 0.459,0.0596]”“(0.0596,0.578)”“(0.578,1.1)”“(1.1,1.62)”
       [9]“(1.62,2.13)”“(2.13,2.65)”

数据类型为数字:

> head(as.numeric(bks))
[1] 5 6 6 6 3 5

这是一个使用ggplot2的解决方案,而不是手工制作切割等等:

test <- rnorm(100)
dat <- data.frame( x=test, above=test>1 )
library(ggplot2)
qplot(x,data=dat,geom="histogram",fill=above)

ggplot2 histo

答案 1 :(得分:7)

更改颜色矢量clr,使其在条形图大于1时显示红色,否则显示灰色。

clr <- ifelse(h$breaks < 1, "grey", "red")[-length(h$breaks)]

然后像以前一样绘制。