gpt4 book ai didi

r - 使用 xts 对象向图中添加点、图例和文本

转载 作者:行者123 更新时间:2023-12-02 02:17:26 28 4
gpt4 key购买 nike

我开始对股票对(配对交易)进行一些分析,这是我为生成图表而编写的函数(pairs.report - 下面列出)。

我需要在一个图中绘制三个不同的线。我列出的函数可以实现我想要的功能,但如果我想在 x 轴(时间线)上进行精细自定义,则需要做一些工作。实际上,它仅在 x 轴上打印年份(对于 10 年的数据)或月份(对于 6 个月的数据),没有刻度格式。

如果我使用 xts 对象,即如果我使用

plot(xts-object-with-date-asset1-asset2, ...)

而不是

plot(date, asset2, ...)

我立即得到了一个格式良好的 x 轴(以及网格和框),但随后使用点()、文本()、线()等函数向绘图添加失败。我想points.xts() 和text.xts() 不会很快出现。

我想要 xts 对象的便利性,但我还需要对我的绘图进行细粒度控制。那么我的工作流程应该是什么样的?我是否必须坚持使用基本图形并手动进行所有自定义?或者有什么方法可以让 xts 为我工作?

我知道lattice和ggplot2,但我现在不想使用它们。这是我提到的功能(欢迎任何改进代码的批评/建议)-

library(xts)

pairs.report <- function(asset1, asset2, dataset) {

#create data structures
attach(dataset)
datasetlm <- lm(formula = asset1 ~ asset2 + 0, data = dataset)
beta = coef(datasetlm)[1]

#add extra space to right margin of plot within frame
par(mar=c(5, 4, 4, 4) + 0.1)

# Plot first set of data and draw its axis
ylim <- c(min(asset2,asset1), max(asset2,asset1))
plot(date,
asset2,
axes=T,
ylim=ylim,
xlab="Timeline",
ylab="asset2 and asset1 equity",
type="l",
col="red",
main="Comparison between asset2 and asset1")
lines(date, asset1, col="green")
box()
grid(lwd=3)

# Allow a second plot on the same graph
par(new=T)

# Plot the second plot and
ylim <- c(min(asset1-beta*asset2), max(asset1-beta*asset2))
plot(date,
asset1-beta*asset2,
xlab="", ylab="",
ylim=ylim,
axes=F,
type="l",
col="blue")

#put axis scale on right
axis(side=4,
ylim=ylim,
col="blue",
col.axis="blue")
mtext("Residual Spread",side=4,col="blue",line=2.5)

abline(h=mean(asset1-beta*asset2))
}

最佳答案

plot.xts 是一个基本绘图函数,这意味着您可以使用 points.default()lines.default() 如果您使用了与plot.xts 相同的 x 参数。但这是没有必要的。它已经在 xts 和 Zoo 包中进行了哈希处理,因为当加载这些包时,并且您执行方法(行)和方法(点),您会看到这些函数已经可用。 points.zoo 记录在 ?plot.zoo 页面上。

关于r - 使用 xts 对象向图中添加点、图例和文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7021413/

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