1

これは私の問題を進めるためのサンプルデータです(実際には変数の数は多いです)

date<-seq(as.Date("2000/1/1"), by = "month", length.out = 12)
v1<-seq(2,32, length.out=12)
v2<-c(11,NA,30,NA,NA,35,NA,40,48,NA,55,64)
v3<-c(5,NA,NA,NA,22,25,NA,30,NA,NA,45,NA)
as.POSIXlt(date, format="%Y/%m/%d")
df<-data.frame(date, v1, v2, v3)

すべての変数を一度にプロットするには、次を使用しています。

matplot(df[,1], df[2:ncol(df)], type='p', pch=2:4, col=2:4)

すべてのポイントを線で結びたいのですが、「matlines」は欠損値が発生する場所を補間できません。type='b' を 'matplot' で使用しませんでした。これは、v1 (つまり、連続データ) に対してのみ連続線をプロットするためです。

ただし、補間する 1 つの方法は、'approx' 関数を使用することです。だから私は試しました

matplot(approx(df[,1], df[2:ncol(df)], n= length(df[[1]])), type='p', pch=2:4, col=2:4)

しかし、R はエラーをスローします: " Error in xy.coords(x, y) : 'x' and 'y' lengths differ"

最後の手段として、「lapply」を使用してシンボルに線を重ねてみましたが、この場合、異なる変数に対して異なる色が表示されません!!

lapply(2:4, function(i) lines(
  approx(df[,1],
         df[[i]], n= length(df[[1]])),
  lty=2, col=2:4))

単一の図に異なる色の線 + 記号として変数をプロットする他の方法はありますか?

4

2 に答える 2

1

(最後のコード ブロック)への呼び出しで置き換えるcol=2:4と、プロットに正しい色の行が表示されます。col=ilapply()

のエラーapprox()は一目瞭然です。xとのy引数はベクトルである必要があり、 に data.frame を提供していyます。approx()各列に個別に使用すると、正常に機能します。

df_approx = matrix(nrow = nrow(df), ncol = 3)
for(i in 2:4) df_approx[,i-1] = approx(df[,1], df[,i], n=length(df[[1]]) )$y
matplot(df[,1], df_approx)
于 2013-08-25T21:16:10.877 に答える