r - 在修改后的 ggplot-boxplot 中绘制异常值时 stat_summary(fun.y) 中的错误

标签 r ggplot2

我想绘制显示 95% 而非 IQR 的箱线图,包括超过 95% 标准定义的异常值。
此代码运行良好,并且基于此处和网上的几个答案:

f1 <- function(x) {
  subset(x, x < quantile(x, probs=0.025)) # only for low outliers
}

f2 <- function(x) {
  r <- quantile(x, probs = c(0.025, 0.25, 0.5, 0.75, 0.975))
  names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
  r
}
d <- data.frame(x=gl(2,50), y=rnorm(100))

library(ggplot2)

p0 <- ggplot(d, aes(x,y)) +
        stat_summary(fun.data = f2, geom="boxplot") + coord_flip()

p1 <- p0 + stat_summary(fun.y = f1, geom="point")

d的结构是:
'data.frame':   100 obs. of  2 variables:
 $ x: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
 $ y: num  2.275 0.659 -0.821 -0.129 1.997 ...

现在,来到我的真实数据,其结构基本相同:
str(test)
'data.frame':   11830917 obs. of  2 variables:
 $ x: Ord.factor w/ 34 levels "SG26"<"SG22"<..: 18 18 18 18 18 18 18 18 18 18 ...
 $ y: num  84.6 84.1 93.3 84 93.2 94.3 83.3 92.5 94.5 98.8 ...

现在,如果我应用相同的绘图命令,我会得到:
    p0 <- ggplot(test, aes(x,y)) + stat_summary(fun.data = f2, geom="boxplot") +  coord_flip() 
    p1 <- p0 + stat_summary(fun.y = f1, geom="point")
    p1

Warning message:
Computation failed in `stat_summary()`:
Argumente implizieren unterschiedliche Anzahl Zeilen: 1, 0 

最后一行是德语版本的“参数意味着不同的行数 1 0”。 p0 产生得很好。

这两个数据集之间可能有什么区别?

最佳答案

正如@Heroka 和@bdemarest 所指出的,这个问题是由一个只有一个值的因子水平引起的。

我的解决方法是跳过这些因素:

f1 <- function(x) {
  if (length(x) > 7) {
    return(subset(x, x < quantile(x, probs=0.025))) # only for low outliers
  } else {
    return(NA)
  }
} 

由于未知原因,问题一直存在,直到每个因子水平至少有 7 个值。

关于r - 在修改后的 ggplot-boxplot 中绘制异常值时 stat_summary(fun.y) 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274849/

相关文章:

r - ggplot2 中多面分组条形图的不同颜色阴影

javascript - 如何将自定义悬停功能添加到 plotOutput 以便它可以用于许多绘图

r - 如何在R或RStudio中的apply()函数中嵌套Quantile()函数

r - dplyr::summarise 带过滤

r - 使用 ggplot 绘制气泡图的每组平均值

r - 如何调整饼图上的 ggrepel 标签?

r - 向 ggplot2 图中添加一条线并调整图例

r - 向循环中添加计数器

从 coord_polar x 轴标签中删除最后一个标签和斜线字符 "/"

r - ggplot2 使用 scale_size_binned 设置 geom_point 形状