到目前为止,我已设法在示例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()
返回的因素。
答案 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)
答案 1 :(得分:7)
更改颜色矢量clr
,使其在条形图大于1时显示红色,否则显示灰色。
clr <- ifelse(h$breaks < 1, "grey", "red")[-length(h$breaks)]
然后像以前一样绘制。