1

ggplot で 9 つの変数から毎日のデータをプロットしようとしましたが、取得したグラフは日付変数を適切に処理できません。x 軸が読み取れず、プロットを読み取ることができません。日付の扱いに問題があると思います。

データは次のとおりです: https://dl.dropbox.com/u/22681355/su.csv

これが私が使用しているコードです:

su=read.csv(file="su.csv", head=TRUE)

meltdf=melt(su)

ggplot(meltdf, aes(x=Date, y=value, colour=variable, group=variable))+geom_line()

出力は次のとおりです。

https://dl.dropbox.com/u/22681355/output.jpg

これは Excel で作成した同じプロットですが、まったく異なるように見えるのはなぜですか?

4

1 に答える 1

1

現在Dateは要因であり、実際の R 日付オブジェクトではありません。文字列をオブジェクトstrptimeに解析するために使用できます。POSIXctこれにより、はるかに優れた結果が得られます。


あなたの質問には直接関係ありませんが、さらにfacet_wrap、時系列を分割してそれらを積み重ねることができます。に必要なインデックスを計算する小さな関数を作成しましたfacet_wrap

createTimeseriesCutupIdx = function(ncuts, nrows, labels) {
  if(missing(labels)) labels = LETTERS[1:ncuts]
  pointsPerCutup = floor((1/ncuts) * nrows)
  idx = rep(labels, each = pointsPerCutup)
  if(length(idx) < nrows) {
    idx[(length(idx) + 1):nrows] <- idx[length(idx)]
  }   
  return(idx)
}

それを使用する方法の例:

require(ggplot2); theme_set(theme_bw())
tserie_length = 5000
df = data.frame(t = as.POSIXct("2006-01-01") + (1:tserie_length) * 3600, 
                value = runif(tserie_length))
ggplot(df, aes(x = t, y = value)) + geom_line()

ここに画像の説明を入力

df$idx = createTimeseriesCutupIdx(ncuts = 5, nrows = nrow(df))
ggplot(df, aes(x = t, y = value)) + 
   geom_line() + 
   facet_wrap(~ idx, scales = "free_x", ncol = 1)

ここに画像の説明を入力

これにより、より大きな時系列を意味のある方法でプロットできます。

于 2012-11-12T10:14:26.170 に答える