了解 R 中的 "cut" 函数

Understanding the "cut" function in R

我尝试在 R 中制作以下直方图(随机 select 所有行的 10% 并将它们涂成红色):

a = rnorm(100000,60000,1000)
b = a

c = data.frame(a,b)
color <- c("black", "red")     
color_1 <- sample(color, nrow(c), replace=TRUE, prob=c(0.9, 0.1))
c$color_1 = as.factor(color_1)


hist(c$a, col = c$color_1, 100000, main = "title")

legend("topleft", legend=c("group a", "group b"),
       col=c("red", "black"), lty = 1, cex=0.8)
title(
      sub = "some title")

问题:但是由于某种原因,颜色没有显示:

我试着看看其他命令是否可以显示颜色:

hist(c$a, col = color_1, 100000, main = "title")

或尝试将颜色变量作为“因素”移除:

a = rnorm(100000,60000,1000)
b = a

c = data.frame(a,b)
color <- c("black", "red")     
color_1 <- sample(color, nrow(c), replace=TRUE, prob=c(0.9, 0.1))
c$color_1 = color_1


hist(c$a, col = c$color_1, 100000, main = "title")

legend("topleft", legend=c("group a", "group b"),
       col=c("red", "black"), lty = 1, cex=0.8)
title(
      sub = "some title")

我也试着听从这个问题的建议 (Partially color histogram in R) :

h = hist(c$a, col = c$color_1, breaks = 100000, main = "title")

legend("topleft", legend=c("group a", "group b"),
       col=c("red", "black"), lty = 1, cex=0.8)
title(
      sub = "some title")



cuts <- cut(h$breaks, c(-Inf,Inf))
plot(h, col=cuts)

但这也没有用。我想这可能是因为我没有正确使用“剪切”功能?

有人可以告诉我如何解决这个问题吗?

谢谢

以下是我对问题的理解:

  1. 绘制向量的直方图;
  2. 10% 的条形图是随机 selected;
  3. 并且有不同的颜色。

首先重新制作示例数据集。显然,不需要第二个向量 b。并且设置了RNG种子,为了让结果可以重现。

set.seed(2021)
a <- rnorm(100000, 60000, 1000)
c <- data.frame(a)
color <- c("black", "red")     
n_colors <- length(color)

现在获取直方图数据但不要绘制它。然后 select 与 counts 一样多的颜色代码(最多 n_colors)。并绘制直方图。

h <- hist(c$a, breaks = "FD", plot = FALSE)
i_col <- sample(n_colors, length(h$counts), replace = TRUE, prob = c(0.6, 0.4))
plot(h, main = "title", col = color[i_col])

legend("topleft", legend=c("group a", "group b"),
       col=c("red", "black"), lty = 1, cex=0.8)
title(sub = "some title")