我试图有条不紊地对我的盒子图进行颜色编码,但它不能始终如一地工作。我希望有人能够确定问题所在。我希望不使用ggplot,如果我可以帮助它,因为我对R很新,并且想要坚持我所知道的(现在)。
基本上,我制作了一系列箱形图,其中9个箱子中的2个需要不同的颜色。我无法指定颜色模式,因为两个框的位置在每个图形的x轴上都会发生变化。我有一个标有" Control"值为0,2或4.我想要值为Control = 0的所有内容为gray80,Control = 4为gray40,Control = 2为白色。我试图通过两种方式实现这一目标:
#BoxPlot with Conditional Coloring, ifelse statement
boxplot(Y~X, ylab="y",
xlab="x",
col=ifelse(Control>=3, "gray40", ifelse(Control<=1, "gray80","white")))
#Colors
colors <- rep("white", length(Control))
colors[Control=4] <- "gray40"
colors[Control=0] <- "gray80"
#BoxPlot with Conditional Coloring, "Colors"
boxplot(Y~X, ylab="y",
xlab="x",
col=colors)
在附图中,只有前两个框应该着色。有人可以告诉我我做错了什么吗? 1
答案 0 :(得分:1)
以下是两种方法。如果它对您不起作用,那么可以采用可重现的方式(请参阅原始问题下的评论)。
xy <- data.frame(setup = rep(c(0, 2, 4), 50), value = rnorm(150))
boxplot(value ~ setup, data = xy)
boxplot(value ~ setup, data = xy, col = ifelse(xy$setup == 0, "gray80", ifelse(xy$setup == 2, "white", "gray40")))
library(ggplot2)
xy$setup <- as.factor(xy$setup)
ggplot(xy, aes(y = value, fill = setup, x = setup)) +
theme_bw() +
geom_boxplot() +
# order of colors is determined by the order of levels of xy$setup
scale_fill_manual(values = c("gray80", "white", "gray40"))