问题描述
在使用boxplot描述数据时,离群值的存在会干扰boxplot可视化的结果。
解决方法
在网上找到的解决方法为设置geom_boxplot(outlier.shape = NA)
,并使用coord_cartesian()
函数进行y轴的缩放。下面有一组随机数展示
1 2 3 4 5 6 7 8 9 10 11 12 13
| 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)]
p2 <- p1 + coord_cartesian(ylim = ylim1*1.05) + ggtitle('coord_cartesian()') p0 + p1 + p2
|
这样的好处在于我们并没有舍去离群值,而是将离群值隐藏起来,并通过对y轴的缩放获得更好的可视化结果。例如,如果直接使用ylim()
函数来调整y轴的范围则是直接移除离群值。
Ref:
https://stackoverflow.com/questions/5677885/ignore-outliers-in-ggplot2-boxplot
完。