R - Box绘制条件颜色不起作用

时间:2016-03-19 17:59:14

标签: r if-statement colors boxplot

我试图有条不紊地对我的盒子图进行颜色编码,但它不能始终如一地工作。我希望有人能够确定问题所在。我希望不使用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

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"))

enter image description here