Частично цветная гистограмма в R

enter image description here

У меня есть гистограмма, как показано на рисунке. Я хочу, чтобы полосы в двух областях были соответственно красными и зелеными, т.е. Полосы от 0 до первой черной границы слева должны быть окрашены в красный цвет, а полосы во второй области должны быть окрашены в зеленый цвет. Можно ли это сделать в R? Код, используемый для получения гистограммы,

hist(pr4$x[pr4$x[,1]>-2,1],breaks=100)

Ответ 1

Лучший способ сделать это - разрешить hist выполнять вычисления для вас, но затем использовать hist (снова) для фактического построения графика. Вот пример:

set.seed(1)
x <- rnorm(1000)
h <- hist(rnorm(1000), breaks=50, plot=FALSE)
cuts <- cut(h$breaks, c(-Inf,-.5,1.75,Inf))
plot(h, col=cuts)

В последней строке .5 и 1.75 указаны пороговые значения, в которых вы хотите иметь разные цвета.

Примечание: в моем исходном ответе используется barplot, но эта стратегия делает работу с осями трудной.

Здесь результат:

enter image description here

Ответ 2

Здесь метод, который я упомянул в комментариях:

Сделайте несколько тестовых данных (вы должны сделать это в своем вопросе!)

test = runif(10000,-2,0)

получить R для вычисления гистограммы, но не построить ее:

h = hist(test, breaks=100,plot=FALSE)

Ваша гистограмма делится на три части:

ccat = cut(h$breaks, c(-Inf, -0.6, -0.4, Inf))

сюжет с этой палитрой, неявное преобразование коэффициента в число индексов палитры:

plot(h, col=c("white","green","red")[ccat])

coloured bars

ggplot2 также доступны решения.

Ответ 3

Попробуйте следующее:

hist(pr4$x[pr4$x[,1]>-2,1],breaks=100, col = c(rep("white", 69), rep("green", 15), rep("red", 16)))

Вам может потребоваться отрегулировать номер повтора для каждого цвета в зависимости от количества разрывов внутри гистограммы.