我有一个数据集,其中包含连续四天中每一秒的观测值(大约 340'000 个数据点)。这太多了,无法在散点图中显示。我只想绘制一个统一的样本,比如 2000 个时间点。
是否有可能通过 ggplot2
的“图形语法”方法实现这一点?我还没有找到任何内置的“采样”修饰符,但也许写一个就足够简单了?
library(ggplot2)
x <- 1:100000
d <- data.frame(x=x, y=rnorm(length(x)))
ggplot(d[sample(x, 2000), ], aes(x=x, y=y)) + geom_point()
这就是如何通过修改传递给 ggplot 的数据来“破解”它。但我不想修改数据,只是将其过滤为仅包含一个样本。
ggplot(d, aes(x=x, y=y)) + ??? + geom_point()
编辑:我专门寻找采样,而不是平滑或装箱。我拥有的数据显示了模拟特定过程的一秒钟所花费的时间。模拟已经并行化,并且对于每个模拟秒,我都有涉及的每个内核的运行时间(总共 8 个)。我想通过仅绘制原始数据点来显示次优负载平衡。采样的原因只是 300'000 个数据点对于散点图来说太多了:绘图花费的时间太长并且可视化效果不好。
最佳答案
您可以使用数据参数在 geom_point
调用中使用子集:
... + geom_point(data=d[sample(x,2000),])
这样,您可以使用所有数据自由添加其他 geom,例如,使用示例数据:
ggplot(d, aes(x=x, y=y)) + geom_hex() + geom_point(data=d[sample(x,2000),])
关于r - 绘制时间序列样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684967/