gpt4 book ai didi

R 为什么 plot.xts 在调用线后创建额外的图形?

转载 作者:行者123 更新时间:2023-12-03 22:00:02 24 4
gpt4 key购买 nike

考虑以下两个图,第一个使用通用绘图函数,第二个使用 plot.xts:

一般情节

par(mfrow = c(2,1))
plot(1:5, type="l", main = "generic plot")
lines(5:1)

正如预期的那样,lines 函数添加到现有图形中,因此它产生单个图形

enter image description here

我已设置 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")

enter image description here

出乎意料的是它产生了两个图表。为什么?

我的具体情况有点复杂,但我发现这段代码是重现我的问题的最简单方法。基本上我想在一个图上继续添加 xts 数据。我能够使用通用的 plot 和 lines 函数来实现这一点。

平台信息:R 版本 3.4.3 (2017-11-30)平台:x86_64-apple-darwin15.6.0(64 位)运行于:macOS High Sierra 10.13.2quantmod_0.4-12xts_0.10-1

最佳答案

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

关于R 为什么 plot.xts 在调用线后创建额外的图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com