当特定组中只有几个样本时,我遇到了geom_boxplot和ggplot2问题。当组中的样本数量较少时,ggplot2的geom_boxplot命令仍会生成盒子和晶须,即使在不合适的情况下,也会产生四分位数的视图。
我希望有人知道一种方法,可以强制ggplot2不要为具有少量样本的组绘制盒子和胡须。
这是一个显示问题的玩具示例。
###Example
library(ggplot2)
#Set DF for plot
Num <- c(150, 196, 182, 224, 111, 129, 80, 183, 130, 171, 169, 165)
Group <- c("Three", "Three", "One", "Two", "One", "Two", "One", "Two", "One", "Two", "One", "Two")
DF <- data.frame(Num, Group)
#Make figure
p1 <- ggplot(DF, aes(Group, Num))
p1 + geom_boxplot(aes(fill=Group)) + scale_color_manual(values = c("#CC0000", "#0000E5", "#008000")) + theme_minimal() + scale_shape_manual(values = c(16,17,15)) +
geom_point(size = 2.5) + scale_x_discrete(limits=c("One", "Two", "Three")).
当前,它输出下图,但是“三”组下只有两个样本。有没有一种方法可以强迫特定组仅在组中少于N个样本的情况下显示点?
对于这个数字,我希望第一和第二小组看起来像他们,但是希望第三小组只有两点,没有别的。任何帮助是极大的赞赏。
答案 0 :(得分:2)
最简单的解决方案肯定是通过预先计算点数来仅给geom_boxplot
要绘制的数据行:
DF$n = with(DF, ave(Num, Group, FUN = length))
## if you like dplyr
# DF = group_by(DF, Group) %>% mutate(n = n())
ggplot(DF, aes(Group, Num)) +
geom_boxplot(data = subset(DF, n > 2), aes(fill = Group)) +
scale_color_manual(values = c("#CC0000", "#0000E5", "#008000")) +
theme_minimal() +
scale_shape_manual(values = c(16, 17, 15)) +
geom_point(size = 2.5) +
scale_x_discrete(limits = c("One", "Two", "Three"))