Частично цветная гистограмма в 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)))
Вам может потребоваться отрегулировать номер повтора для каждого цвета в зависимости от количества разрывов внутри гистограммы.