gpt4 book ai didi

r - 如何在多 plot.zoo 中添加多条直线

转载 作者:行者123 更新时间:2023-12-04 01:46:41 26 4
gpt4 key购买 nike

我有多个时间序列数据图,我需要在每个图中有一条水平线,但具有不同的水平值(例如,第一个图:h=50,第二个图:h=48 ...)。

我试过 abline(h=50...我在每个图中都得到了水平线。
我试过 abline(h=c(50,48...我在每个图中都有多条水平线。

我不知道如何获取 plot.zoo 索引以绘制 h=50在第一个图中,h=48在第二个情节等。

library(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)

# plot with single line
my.panel <- function(x, ...) {
lines(x, ...)
abline(h=50, col = "red", lty="solid", lwd=1.5 )
}
plot.zoo(x, main="title",
plot.type="multiple", type="o", lwd=1.5, col="blue",
panel=my.panel)


# plot multiple lines in all plots
my.panel <- function(x, ...) {
lines(x, ...)
abline(h=c(50,50,48,50), col = "red", lty="solid", lwd=1.5 )}

plot.zoo(x, main="title",
plot.type="multiple", type="o", lwd=1.5, col="blue",
panel=my.panel)

最佳答案

在实际 ?plot.zoo 中没有彻底描述在多面板图中自定义单个面板文本。在“详细信息”部分,您可以找到:
“在自定义面板的情况下,panel 可以引用 parent.frame$panel.number 以确定从哪个帧调用面板。参见示例。”。并且有相当多的例子。使用它们作为模板,我发现这可能是一种调用单独面板的方法,并绘制单独的 hline每个。
更新。感谢@G。 Grothendieck 的编辑使代码更清晰!

# create values for hline, one for each panel
hlines <- c(50, 50, 48, 50)

# panel function that loops over panels
my.panel <- function(x, ...) {
lines(x, ...)
panel.number <- parent.frame()$panel.number
abline(h = hlines[panel.number], col = "red", lty = "solid", lwd = 1.5)
}

plot.zoo(x, main = "title", type = "o", lwd = 1.5, col = "blue", panel = my.panel)

enter image description here

关于r - 如何在多 plot.zoo 中添加多条直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314571/

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