首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么plot.xts在调用线路后创建额外的图形?

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

Stack Overflow用户
提问于 2018-01-25 15:03:53
回答 1查看 748关注 0票数 2

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

一般地块

代码语言:javascript
运行
复制
par(mfrow = c(2,1))
plot(1:5, type="l", main = "generic plot")
lines(5:1)

正如预期的那样,线条函数添加到现有的图中,从而导致单个图的生成。

我设置了mfrow = c(2,1)来证明,只有一个图。现在使用xts数据:

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 15:11:20

xts绘图函数并不像基本绘图函数那样工作,尽管它们的调用看起来是一样的。

plot.xts函数返回一个对象。默认情况下,如果没有指定对象,R将“打印”对象,从而绘制一个绘图。lines.xts函数更改了最近的绘图对象,并添加了一个新系列。由于没有保存绘图,所以也会打印新对象。这个新对象会记住第一个系列以及新添加的系列。

最好的做法是保存这些对象,并且只在添加层之后打印它们。例如

代码语言:javascript
运行
复制
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
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48445963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档