繁体   English   中英

boxplot使用ggplot,n> 5

[英]boxplot using ggplot with n > 5

我确信之前已经提出过这个问题。 但是我找不到类似的东西。 所以考虑一个简单的工作示例

我们创建随机数据然后创建箱图:

set.seed(123456)
Ax <- sample(1:3, size = 75, replace = T)
Fac <- sample(LETTERS[1:4], 75, replace = T)
yvalue <- runif(75)

df1 <- data.frame(Ax, Fac, yvalue)

library(ggplot2)
ggplot(df1, aes(factor(Ax), yvalue, colour = Fac)) + 
  geom_boxplot()

但我们更接近审查我们的数据:

table(df1$Ax, df1$Fac)

我想像上面那样创建一个boxplot图,但是当group sizes(n =)小于6时,则:

  • 根本不绘制箱线图
  • 或者只在中间绘制一条垂直线

这是用于红色圆圈中阴影的以下数据 在此输入图像描述

你可以试试:

包括使用ave()

df1$length <- ave(df1$yvalue, interaction(df1$Ax, df1$Fac), FUN=length)

现在,例如调整alpha以绘制未着色/阴影框:

ggplot(df1, aes(factor(Ax), yvalue, fill = Fac, alpha=factor(ifelse(df1$length < 6 ,0.5, 1)))) + 
geom_boxplot()

在此输入图像描述

如果你不关心那些箱形图所在的占位符空间,你可以简单地删除那些不符合你标准的观察结果。 下面的示例使用dplyr进行数据操作

library(dplyr)
library(ggplot2)

### Identify all groups that have > 5 observations per group
df2 <- df1 %>%  group_by(Fac , Ax) %>%  summarise( n = n()) %>%  filter ( n > 5)

### Only keep groups that meet our criteria 
df3 <- df1 %>%  semi_join(df2 , by = c("Fac" , "Ax") )

ggplot(df3, aes(factor(Ax), yvalue, colour = Fac)) + 
  geom_boxplot()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM