2013-10-11 15 views
8

私は複数の時系列データプロットを持っていますが、各プロットでは横線が必要ですが、水平値が異なります(第1プロット:h=50、第2プロット:h=48 .. )。複数の直線を複数のプロットに追加する方法

私はabline(h=50...を試しましたが、各プロットで水平線が得られました。 私はabline(h=c(50,48...を試して、各プロットで複数の水平線を取得しました。

第1プロットにh=50、第2プロットにh=48をプロットするためにplot.zooインデックスを取得する方法を理解できません。マルチパネルプロットに単一のパネルをカスタマイズするには

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) 

答えて

6

は徹底的に実際?plot.zooテキストで説明されていません。 「詳細」セクションでは、
「カスタムパネルの場合、panelparent.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

関連する問題