【问题标题】:Understanding the "cut" function in R理解 R 中的“cut”函数
【发布时间】:2021-11-29 09:12:08
【问题描述】:

我尝试在 R 中制作以下直方图(随机选择所有行的 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)

但这也不起作用。我想这可能是因为我没有正确使用“cut”功能?

谁能告诉我如何解决这个问题?

谢谢

【问题讨论】:

  • 如果您随机选择直方图条,您没有 1) 切点; 2) b 是什么意思?其余代码中未使用它; 3) 你真的想要 100K 条形图对应 100K 数据点吗?

标签: r plot graph data-visualization data-manipulation


【解决方案1】:

这是我对这个问题的理解:

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

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

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

现在获取直方图数据,但不要绘制它。然后选择与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")

【讨论】:

  • 感谢您的回答!我能够以另一种方式弄清楚 - 你想看看我的答案吗? (几分钟后,我可以接受你的回答)
  • (以后有时间可以看看这个问题吗:stackoverflow.com/questions/69512664/…谢谢!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2019-10-02
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多