美文网首页R语言绘图技巧
R | 隐藏ggplot2 boxplot的离群值

R | 隐藏ggplot2 boxplot的离群值

作者: 尘世中一个迷途小书僮 | 来源:发表于2021-05-01 20:43 被阅读0次

    问题描述

    在使用boxplot描述数据时,离群值的存在会干扰boxplot可视化的结果。

    解决方法

    在网上找到的解决方法为设置geom_boxplot(outlier.shape = NA),并使用coord_cartesian()函数进行y轴的缩放。下面有一组随机数展示

    library(tidyverse)
    library(patchwork)
    set.seed(123)
    # 生成随机数及离群值
    df <- data.frame(y = c(-100, rnorm(100), 100))
    p0 <- ggplot(df, aes(y = y)) + geom_boxplot(aes(x = factor(1))) + ggtitle('Orignial')
    p1 <- ggplot(df, aes(y = y)) + geom_boxplot(aes(x = factor(1)), outlier.shape = NA) + ggtitle('outlier.shape=NA')
    # 计算下、上四分位数
    ylim1 <- boxplot.stats(df$y)$stats[c(1, 5)]
    # 通过coord_cartesian() 缩放y轴坐标
    p2 <- p1 + coord_cartesian(ylim = ylim1*1.05) + ggtitle('coord_cartesian()')
    p0 + p1 + p2
    
    
    image.png

    这样的好处在于我们并没有舍去离群值,而是将离群值隐藏起来,并通过对y轴的缩放获得更好的可视化结果。例如,如果直接使用ylim()函数来调整y轴的范围则是直接移除离群值。

    ref:
    https://stackoverflow.com/questions/5677885/ignore-outliers-in-ggplot2-boxplot

    完。

    相关文章

      网友评论

        本文标题:R | 隐藏ggplot2 boxplot的离群值

        本文链接:https://www.haomeiwen.com/subject/luujrltx.html