【问题标题】:Include indication of extreme outliers in ggplot在 ggplot 中包含极端异常值的指示
【发布时间】:2015-06-10 08:47:30
【问题描述】:

我的数据集中有一些非常非常少的异常值,使得箱线图难以阅读:

library(ggplot2)
mtcars$mpg[1] <- 60
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot()

因此,我想像这样指出极端异常值:

任何想法如何在ggplot2 中执行此操作?转换轴不是我的选择...

【问题讨论】:

    标签: r ggplot2 outliers


    【解决方案1】:

    这是一个开始:

    library("ggplot2")
    mtcars$mpg[1:2] <- c(50,60)
    p <- ggplot(mtcars, aes(factor(cyl), mpg))
    p + geom_boxplot()
    

    定义最大值:

    maxval <- 40
    

    使用dplyr(也可以在base R或plyr中完成)提取异常值并将文本字符串放在一起:

    library("dplyr")
    dd <- mtcars %>% filter(mpg>maxval) %>%
        group_by(cyl) %>%
            summarise(outlier_txt=paste(mpg,collapse=","))
    

    设置最大y值并添加箭头加标签:

    library("grid") # needed for arrow() function
    p2 <- p + geom_boxplot() +
        scale_y_continuous(limits=c(min(mtcars$mpg),maxval))+
           geom_text(data=dd,aes(y=maxval,label=outlier_txt),
                     size=3,vjust=1.5,hjust=-0.5)+
              geom_segment(data=dd,aes(y=maxval*0.95,yend=maxval,
                           xend=factor(cyl)),
                     arrow = arrow(length = unit(0.1,"cm")))
    p2
    

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 2015-03-11
      • 2018-04-24
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多