我有一个包含 10000 个观察值的长时间序列,我想将其可视化。问题是,如果我只是正常地绘制它,时间维度将被压缩,并且我想要可视化的时间序列的任何细节都不会明显。例如:
plot((sin(1:10000/100)+rnorm(10000)/5),type='l')
我想要的是以某种方式将以下内容并排绘制在一个巨大的长图中,而不使用 par(mfrow=c(1,100))。然后,我想导出这个非常宽的图,然后简单地滚动以可视化整个系列。
plot((sin(1:10000/100)+rnorm(10000)/5)[1:100],type='l')
plot((sin(1:10000/100)+rnorm(10000)/5)[101:200],type='l')
plot((sin(1:10000/100)+rnorm(10000)/5)[201:300],type='l')
.....
最终我希望将 3 或 4 个这些巨大的宽图彼此叠在一起,并带有一个par(mfrow=c(4,1))
.
我知道答案与pin
设置在par
,但我不断得到Error in plot.new() : plot region too large
。我猜这与互动有关pin
与另一个par
参数
如果我们能够使像素高度和宽度完全正确,则会获得奖励积分。由于导出大小不完美,绘图最好不要跳过随机像素。
您可能会考虑的另一种选择是 svg,无论如何,它都会产生比 png/jpeg 更好的质量。
就像是
svg(width = 2000, height = 7)
par(mfrow=c(4,1), mar = c(4, 4, 0, 2))
for (i in 1:4){
plot((sin(1:10000/100)+rnorm(10000)/5),type='l',
bty = "l", xaxs = "i")
}
dev.off()
将产生一个非常宽的图,大小刚刚超过 1MB,在 Chrome 中渲染得非常好。
请注意,此处的宽度和高度以英寸为单位。
P.S.svg 还提供了交互式图形的潜力。刚刚看到一个很好的例子,允许用户选择一个长时间序列的区域来放大,参见图 22用于 Web 的动态和交互式 R 图形:gridSVG 包 https://www.stat.auckland.ac.nz/~paul/gridSVG/gridsvg.pdf,保罗·默雷尔和西蒙·波特的草稿。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)