当存在数百万个点时更有效地绘制数据的统计方法?

机器算法验证 r 数据可视化
2022-01-23 20:08:44

我发现当存在数百万个点时,R 可能需要很长时间才能生成图 - 鉴于点是单独绘制的,这不足为奇。此外,这样的地块通常过于杂乱和密集而无用。许多点重叠并形成一个黑色块,并且花费大量时间在该块中绘制更多点。

在标准散点图数据是否有任何统计替代方法?我已经考虑过密度图,但还有哪些其他选择?n

4个回答

查看由 Dan Carr 实现的纸/方法的hexbin包。pdf 小插图更多详细信息,我在下面引用:

1 概述

六边形分箱是一种二元直方图形式,可用于可视化具有大 n 的数据集中的结构。六边形分箱的基本概念非常简单;

  1. 集合 (range(x), range(y)) 上的 xy 平面由六边形的规则网格细分。
  2. 计算落在每个六边形中的点数并将其存储在数据结构中
  3. 计数 > 0 的六边形使用色带或与计数成比例地改变六边形的半径来绘制。底层算法非常快速且有效地显示具有n106

如果以巧妙的方式选择网格的大小和色带中的切口,则数据中固有的结构应该出现在分箱图中。相同的注意事项适用于六边形分箱,适用于直方图,在选择分箱参数时应小心谨慎

我必须承认我不完全理解你的最后一段:

“我不是在寻找密度图(尽管这些通常很有用),我想要与简单的绘图调用相同的输出,但如果可能的话,比数百万个重叠图要快得多。”

您正在寻找哪种类型的绘图(函数)也不清楚。

鉴于您有度量变量,您可能会发现六边形分箱图或向日葵图很有用。如需更多参考,请参阅

这是一项艰巨的任务,没有现成的解决方案(这当然是因为密度图是一个诱人的后备方案,没有人真正关心)。所以,你可以做什么?

如果它们确实重叠(即具有完全相同的 X 和 Y 坐标)并且您没有使用 alpha,那么最好的办法就是使用unique(使用 alpha,它可以对这些组求和)来减少重叠。

如果没有,您可以手动将坐标四舍五入到最近的像素并使用以前的方法(但这是一个肮脏的解决方案)。

最后,您可以制作密度图,仅使用它对最密集区域中的点进行二次采样。另一方面,这不会产生完全相同的情节,并且如果不精确调整可能会引入伪影。

该问题的另一个直接答案是 rgl 包,它可以使用 OpenGL 绘制数百万个点。此外,指定点大小(例如 3)并缩小以将这些质心视为整体块,或放大并查看曾经是整体的结构 - 点大小是恒定的,但它们之间的距离在屏幕上取决于缩放。也可以使用 Alpha 级别。