了解 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)
但这也没有用。我想这可能是因为我没有正确使用“剪切”功能?
有人可以告诉我如何解决这个问题吗?
谢谢
以下是我对问题的理解:
- 绘制向量的直方图;
- 10% 的条形图是随机 selected;
- 并且有不同的颜色。
首先重新制作示例数据集。显然,不需要第二个向量 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")
我尝试在 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)
但这也没有用。我想这可能是因为我没有正确使用“剪切”功能?
有人可以告诉我如何解决这个问题吗?
谢谢
以下是我对问题的理解:
- 绘制向量的直方图;
- 10% 的条形图是随机 selected;
- 并且有不同的颜色。
首先重新制作示例数据集。显然,不需要第二个向量 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")