我知道它已经回答了here,但仅限于ggplot2直方图。 假设我有以下代码来生成带有红条和蓝条的直方图,每条相同的数字(六个红色和六个蓝色):
set.seed(69)
hist(rnorm(500), col = c(rep("red", 6), rep("blue", 7)), breaks = 10)
我想自动完成整个过程,如何使用任意x轴的值并设置条件,使用hist()
函数为直方图条(使用两种或更多种颜色)着色,而不必指定每种颜色的重复次数?
非常感谢。
答案 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")
输出:
答案 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)