考虑以下两种情况,第一种使用通用的绘图函数,第二种使用plot.xts:
一般地块
par(mfrow = c(2,1))
plot(1:5, type="l", main = "generic plot")
lines(5:1)
正如预期的那样,线条函数添加到现有的图中,从而导致单个图的生成。
我设置了mfrow = c(2,1)来证明,只有一个图。现在使用xts数据:
par(mfrow = c(2,1))
plot(xts(x = 1:5, order.by = 1:5+as.Date("2017-01-01")), type="l", main = "plot.xts")
lines(xts(x = 5:1, order.by = 1:5+as.Date("2017-01-01")), main = "plot.xts")
意外地产生了两个图。为什么?
我的具体情况有点复杂,但我发现这段代码片段是重现问题的最简单方法。基本上,我想继续在一个地块上添加xts数据。我能够用一般的绘图和线条函数来完成这个任务。
平台信息:r版本3.4.3 (2017-11-30)平台: x86_64-apple-darwin15.6.0 (64位),运行于: macOS HighSierra10.13.2 quantmod_0.4-12 xts_0.10-1
发布于 2018-01-25 15:11:20
xts
绘图函数并不像基本绘图函数那样工作,尽管它们的调用看起来是一样的。
plot.xts
函数返回一个对象。默认情况下,如果没有指定对象,R将“打印”对象,从而绘制一个绘图。lines.xts
函数更改了最近的绘图对象,并添加了一个新系列。由于没有保存绘图,所以也会打印新对象。这个新对象会记住第一个系列以及新添加的系列。
最好的做法是保存这些对象,并且只在添加层之后打印它们。例如
par(mfrow = c(2,1))
pp <- plot(xts(x = 1:5, order.by = 1:5+as.Date("2017-01-01")), type="l", main = "plot.xts")
pp <- lines(xts(x = 5:1, order.by = 1:5+as.Date("2017-01-01")), main = "plot.xts")
pp #plot will be drawn here
https://stackoverflow.com/questions/48445963
复制相似问题