R语言绘图技巧

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

完。

上一篇下一篇

猜你喜欢

热点阅读