R | 隐藏ggplot2 boxplot的离群值
2021-05-01 本文已影响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
完。