boxplot ggplot2 :: qplot()在同一图R中未分组和分组数据

时间:2017-10-19 16:39:16

标签: r

我的数据集包含一个因子(TypeOfCat)和一个数字(AgeOfCat)。

我制作了下面的方块图。除了代表每种类型猫的盒子外,我还尝试添加一个代表未分组数据的盒子(即整个猫群和它们的年龄)。我所拥有的并不是我所追求的,因为sum()当然不会提供创建这样一个情节所需的所有信息。任何帮助将非常感激。

数据集和当前代码:

Df1 <- data.frame(TypeOfCat=c("A","B","B","C","C","A","B","C","A","B","A","C"),
              AgeOfCat=c(14,2,5,8,4,5,2,6,3,6,12,7))

Df2 <- data.frame(TypeOfCat=c("AllCats"),
                  AgeOfCat=sum(Df1$AgeOfCat)))

Df1 <- rbind(Df1, Df2)

qplot(Df1$TypeOfCat,Df1$AgeOfCat, geom = "boxplot") + coord_flip()

2 个答案:

答案 0 :(得分:1)

喜欢这个吗?

library(ggplot2)
# first double your data frame, but change "TypeOfCat", since it contains all:
df <- rbind(Df1, transform(Df1, TypeOfCat = "AllCats"))
# then plot it:
ggplot(data = df, mapping = aes(x = TypeOfCat, y = AgeOfCat)) +
    geom_boxplot() + coord_flip()

答案 1 :(得分:1)

无需sum。只需为AllCats单独获取所有值:

# Your original code:
library(ggplot2)
Df1 <- data.frame(TypeOfCat=c("A","B","B","C","C","A","B","C","A","B","A","C"),
                 AgeOfCat=c(14,2,5,8,4,5,2,6,3,6,12,7))
# this is the different part:
Df2 <- data.frame(TypeOfCat=c("AllCats"),
                  AgeOfCat=Df1$AgeOfCat)
Df1 <- rbind(Df1, Df2)

qplot(Df1$TypeOfCat,Df1$AgeOfCat, geom = "boxplot") + coord_flip()

如果将geom_point添加到boxplot中,您可以看到所有观察结果:

ggplot(Df1, aes(TypeOfCat, AgeOfCat)) +
  geom_boxplot() +
  geom_point(color='red') +
  coord_flip()

enter image description here