R中简单语言中geom_point和geom_jitter有什么区别?

Par*_*gal 9 r ggplot2

我被告知使用geom_jitter而不是geom_points,并且在帮助中给出的原因是它在较小的数据集中处理过度绘图.我很困惑,过度绘图意味着什么以及为什么它会出现在较小的数据集中?

Gre*_*gor 26

过度绘图是指一个或多个点在同一个地方(或足够接近同一个地方),你无法看到该情节并告诉它有多少点.

两个(非相互排斥的)案例经常导致过度绘图:

  1. 非连续数据 - 例如,如果x或是y整数,那么将很难分辨出有多少点.

  2. 大量数据 - 如果您的数据密集(或具有高密度区域),那么即使x并且y连续,点也经常重叠.

抖动会给数据增加少量的随机噪声.它通常用于分散否则会过度绘制的点.它仅在非连续数据情况下有效,其中过度绘制的点通常被空白包围 - 将数据抖动到空白区域可以看到各个点.它有效地使离散数据不离散化.

对于高密度数据,抖动没有帮助,因为在重叠点周围没有可靠的空白区域.用于减轻过度绘图的其他常用技术包括

  • 使用较小的点
  • 使用透明度
  • 分级数据(如热图中)

处理小数据的抖动示例(改编自?geom_jitter):

p = ggplot(mpg, aes(cyl, hwy))
gridExtra::grid.arrange(
    p + geom_point(),
    p + geom_jitter(width = 0.25, height = 0.5)
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在上面,移动点只是一点点展开.现在我们可以看到有多少点"真的存在",而不会过多地改变我们不理解的数据.

并没有处理更大的数据:

p2 = ggplot(diamonds, aes(carat, price))
gridExtra::grid.arrange(
    p2 + geom_point(),
    p2 + geom_jitter(),
    p2 + geom_point(alpha = 0.1, shape = 16)
)
Run Code Online (Sandbox Code Playgroud)

下面,抖动的情节(中间)与常规情节(上图)一样过度绘制.点周围没有空地可以将它们分散开来.但是,通过较小的点标记和透明度(底部图),我们可以了解数据的密度.

在此输入图像描述