ggplot2 - 为什么改变轴刻度会影响变量的汇总统计?

Ott*_*ssi 1 r ggplot2

我有以下数据:

x <- data.frame('myvar'=c(10,10,9,9,8,8, runif(100)), 'mygroup' = c(rep('a', 26), rep('b', 80)))
Run Code Online (Sandbox Code Playgroud)

我想使用 ggplot2 中的盒须图来描述数据。我还使用 stat_summary 包含了平均值。

library(ggplot2)
ggplot(x, aes(x=myvar, y=mygroup)) + 
geom_boxplot() +
stat_summary(fun=mean, geom='point', shape=20, color='red', fill='red') 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这很好,但对于我的一些图表来说,异常值是如此之大,以至于很难理解总分布。在这些情况下,我切割了 x 轴:

ggplot(x, aes(x=myvar, y=mygroup)) + 
geom_boxplot() +
stat_summary(fun=mean, geom='point', shape=20, color='red', fill='red')  +
scale_x_continuous(limit=c(0,5))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,现在仅使用图表上可见的数据子集来计算平均值(和中位数?)。有没有办法ggplot将异常值观测值包含在计算中,但将它们从可视化中删除?

我想要的输出是一个图表,其中 x 限制c(0,5)为 group ,红点为 2.48 mygroup='a'

jps*_*ith 5

scale_x_continuous将删除那些不在限制内的点。您想使用coord_cartesian“放大”而不删除数据:

ggplot(x, aes(x=myvar, y=mygroup)) + 
  geom_boxplot() +
  stat_summary(fun=mean, geom='point', shape=20, color='red', fill='red')  +
  coord_cartesian(c(0,5))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 一般情况下,形式并不糟糕(当然,除非您使用 if 来歪曲某些内容)。例如,如果我绘制模拟传染病爆发的图,它们的大部分轨迹将是几个月内的少数病例,尽管由于随机性,有些可能会非常大且很长(即,[此处](https:// i.stack.imgur.com/InWNl.png))-因此,出于实际目的,通过“放大”但保持摘要统计数据相同来探索相关数据会更有意义(示例[此处](https:// i.stack.imgur.com/C1tf3.png)) - 这里有一个“是和否”的答案:) (2认同)