r - 箱线图的颜色框因因子水平而异

标签 r boxplot

我认为这将是一项直接的任务,但尽管搜索了 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/

相关文章:

R:在 ggplot boxplot 中裁剪图例留下两个独立的图例

r - 是否可以在查看器 Pane 中查看 HTML 表格?

R-自动化网页文本抓取

r - 如何将 ggplot 中的轴标签从数字日期更改为字符串?

r - ggplot : How to change boxplot settings when stat_summary is used

python - Matplotlib boxplot 仅显示最大和最小传单

javascript - 将悬停文本添加到 plotly.js boxplot

python - R在python中的顺序等效

r - R 中 K-Modes 聚类的稳定性

r - 创建序列组合