具有两种或更多颜色的单个直方图,具体取决于x轴值

时间:2017-03-17 19:27:42

标签: r colors histogram

我知道它已经回答了here,但仅限于ggplot2直方图。 假设我有以下代码来生成带有红条和蓝条的直方图,每条相同的数字(六个红色和六个蓝色):

set.seed(69)
hist(rnorm(500), col = c(rep("red", 6), rep("blue", 7)), breaks = 10)

我输出以下图像: enter image description here

我想自动完成整个过程,如何使用任意x轴的值并设置条件,使用hist()函数为直方图条(使用两种或更多种颜色)着色,而不必指定每种颜色的重复次数?

非常感谢。

2 个答案:

答案 0 :(得分:2)

当我想这样做时,我实际上将数据制表并按如下方式制作barplot(请注意,列表数据的条形图是直方图):

 set.seed(69)
 dat <- rnorm(500, 0, 1)
 tab <- table(round(dat, 1))#Round data from rnorm because rnorm can be precise beyond most real data
 bools <- (as.numeric(attr(tab, "name")) >= 0)#your condition here
 cols <- c("grey", "dodgerblue4")[bools+1]#Note that FALSE + 1 = 1 and TRUE + 1 = 2
 barplot(tab, border = "white", col = cols, main = "Histogram with barplot")

输出:

enter image description here

答案 1 :(得分:1)

hist函数使用pretty函数来确定断点,因此您可以这样做:

set.seed(69)
x <- rnorm(500)
breaks <- pretty(x,10)
col <- ifelse(1:length(breaks) <= length(breaks)/2, "red", "blue")
hist(x, col = col, breaks = breaks)