2013-10-11 17 views
8

Birden çok zaman dizisi veri grafikleri var ve her arsada yatay bir satıra ihtiyacım var ama farklı yatay değerleri ile (es. 1. çizim: h=50, 2. çizim: h=48 .. .).Birden çok düz çizgi nasıl eklenir plot.zoo

abline(h=50...'u denedim ve her arsada yatay çizgiyi alıyorum. abline(h=c(50,48...'u denedim ve her çizimde çok yatay yatay çizgiler alıyorum.

1. plotta, h=48 numaralı grafikte h=50 numaralı grafiği çizmek için plot.zoo dizinini nasıl alacağımı anlayamıyorum. Bir multipanel arsa içinde tek panelleri özelleştirmek için

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) 

cevap

6

iyice fiili ?plot.zoo metinde tarif edilmez. 'Ayrıntılar' bölümünde bulabilirsiniz:
"Panelin hangi çerçevesinden arandığını belirlemek için özel bir panelde panel, parent.frame$panel.number referans verebilir. Bkz. Örnekler.". Ve birkaç örnek var. Bunları şablon olarak kullanarak, bunun ayrı panelleri çağırmanın ve her birinde ayrı bir hline çizmenin bir yolu olabileceğini buldum.
Güncelleme. @G için teşekkürler. çok temizleyici yapılan bir düzenleme için Grothendieck temiz!

# 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

İlgili konular