首页 > 解决方案 > 如何快速绘制数百万条线

问题描述

x 轴可以被视为 1:n。

y 轴值分布在有限范围内 [-1, 1]

我想绘制连接以上向量描述的所有点的线段

geom_line(aes(x, y))

除了性能,一切都很好。渲染最终图像需要几分钟。示例情节大打出手。

样本图

有什么方法可以提高性能吗?

谢谢您的意见。我确实尝试过重新采样。但对我来说,进行真正的“智能”重采样非常困难。由于我们非常关心在许多统计案例中通常被视为“噪声”的“局部平均值之外”。请允许我通过图像显示问题,尽管不鼓励这样做。

在此处输入图像描述

上图是原图,下图是重新采样的。我在原始图像中用箭头营销“重要”信息丢失。

标签: rggplot2

解决方案


非常感谢您这么多评论。最终我认为我可以通过将数百个值聚合到一个行范围中来解决这个问题。

为了更具描述性,假设有 1M 点。

  1. 将它们分成 10K 组,每组 100 分。
  2. 获取每组的最小值和最大值。
  3. 对于每个组,从最小值到最大值画一条垂直线。

通过进行这样的聚合,我可以将数据减少 1/group.size

尽管如此,在 R 中绘制一条线可能需要几十微秒,这让我有点惊讶。一开始我在想是否有像“硬件加速”这样的解决方案


推荐阅读