Изменение цветов гистограммы больше определенного значения
До сих пор мне удалось изменить цвет на одну строку в гистограмме, следуя примеру здесь
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()
.
Ответы
Ответ 1
В основном вам нужен логический селектор на test
, а не на cut
s.
Вот как выглядит ваш объект вырезания:
> bks <- cut(test,10)
Уровни имеют характер типа:
Уровни (BKS) 1 "(-2.53, -2.01)" "(-2.01, -1.5]" "(-1.5, -0.978)" "(- 0,978, -0,459]" [5] "(-0,459,0,0596)" "(0,0596,0578)" "(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]()
Ответ 2
Измените свой цветной вектор clr
, чтобы он отображал красный цвет, когда полоса больше 1 и серый в противном случае.
clr <- ifelse(h$breaks < 1, "grey", "red")[-length(h$breaks)]
Затем зарисуйте как раньше.