我认为这将是一项直接的任务,但尽管搜索了 stackoverflow、文档和 R-help 文件,我仍无法找到答案。 我需要能够根据因子值对箱线图的框进行不同的着色。
以下简化的示例显示了所需的结果:
df<-data.frame("Grp" = rep(LETTERS[1:5],each=20),"V" = rnorm(100),"F" = c(rep("a",80),rep("b",20)))
boxplot(V~Grp,df,col=c("red","red","red","red","blue"))
我需要做的是将 col=c(...)
替换为与“The colors of boxes having F="a"
等价的内容> 将为红色,具有 F="b"
的框的颜色将为蓝色"。
在真实的数据中,当然有几个因素,还有更多的Grps等等。
任何想法将不胜感激。
谢谢。
最佳答案
使用 ggplot2
很容易做到这一点。我想不出一种直接的方法来处理基本图形。
我们的想法是在您的数据集中创建一个取决于因素的颜色变量。然后将其作为颜色属性传递给 ggplot
:
df<-data.frame("Grp" = rep(LETTERS[1:5],each=20),"V" = rnorm(100),"F" = c(rep("a",80),rep("b",20)))
df$boxcolor <- with(df, ifelse(F == "a", "red", "blue"))
library(ggplot2)
ggplot(df, aes(x = Grp, y = V, color = boxcolor)) + geom_boxplot()
在您的简单示例中,您可以直接将变量 F
作为颜色变量传递,让 ggplot 为您选择颜色。我不知道这是否会扩展到您更复杂的问题。
ggplot(df, aes(x = Grp, y = V, color = F)) + geom_boxplot()
关于r - 箱线图的颜色框因因子水平而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23434422/