使用ggplot只为许多颜色中的特定箱图着色

时间:2014-08-08 19:24:32

标签: r ggplot2

我想使用ggplot指定一个箱图中的颜色。

例如,假设我使用的是nlme软件包附带的Orthodont数据集。

我如何指定我希望男性的箱图是绿色的?

> head(Orthodont)
Grouped Data: distance ~ age | Subject
  distance age Subject  Sex
1     26.0   8     M01 Male
2     25.0  10     M01 Male
3     29.0  12     M01 Male
4     31.0  14     M01 Male
5     21.5   8     M02 Male
6     22.5  10     M02 Male
> ggplot(data = Orthodont) + geom_boxplot(aes(x = factor(Sex), y = distance))

谢谢!

2 个答案:

答案 0 :(得分:6)

如果您有多个级别的x变量(例如Subject),并且您不需要在图例中显示颜色,那么您可以仅在一个具有所需颜色的级别上绘制另一个boxplot图层。

ggplot(data = Orthodont) + geom_boxplot(aes(x = Subject, y = distance))+
      geom_boxplot(data=Orthodont[Orthodont$Subject=="M01",],
                        aes(x = Subject, y = distance),fill="green")

enter image description here

答案 1 :(得分:3)

可能有一种方法可以只为一个着色,但您可以手动将填充更改为其他颜色。默认填充似乎是白色。您也可以values = c(NA, "red")

ggplot(Orthodont) +
  geom_boxplot(aes(x=factor(Sex), y = distance, fill = Sex)) +
  scale_fill_manual(values = c("red", "white"))

enter image description here