【发布时间】:2016-04-22 19:16:01
【问题描述】:
我有一个包含数百万个点的数据框 - 每个点都有两个值。
当我这样绘制时:
plot(myData)
所有的点都画出来了,但是情节很忙,所以我想我会把它画成一条线:
plot(myData, type="l")
但是虽然 x 轴没有改变(即从 0 到 7e+07),但实际绘图停止在 3e+07 左右,而且我实际上也没有得到正确的线图。
线图有限制吗?
更新 如果我使用
plot(myData, type="h")
我得到了正确且可用的输出,但我仍然想知道为什么type="l" 选项失败得如此严重。
进一步更新
我正在绘制一个时间序列 - 这是一个使用 type="h" 的输出:
这很好用,但是有一条线可以让我比较几个输出。
【问题讨论】:
-
您真的需要绘制百万个点吗?如果你画一条线会更忙,因为每个点位置都会被一条线连接起来。如果您真的想绘制每个点,那么仅减小点大小如何。您可以使用
cex参数来执行此操作,例如plot(myData, cex=0.3)。 -
或者,保留原来的点大小,并设置一个高度透明的 alpha 值,以便弹出更密集的区域,
col="#00000022"通常效果很好。 -
这些点遵循相对平滑的曲线,所以一条线非常有意义——它是一个时间序列
-
只有当您的数据框很大时才会发生这种情况?您是否尝试过将尺寸减半直到它停止发生?或许能给我们一点线索。此外,一个可重现的例子可能会有所帮助......
-
FWIW,我刚刚绘制了一个千万点的时间序列,没有问题(除了渲染需要一分钟左右)。这是代码:
set.seed(4943); dat = data.frame(time=1:1e7, values=cumsum(rnorm(1e7))); plot(dat$time, dat$values, type="l").