10

イベントからの日数のデータがあります。このデータは不規則にサンプリングされています。私の時点は 0、5、6、10、104 日のようです。特定の日時の情報はありません。つまり、調査しているイベントが実際にいつ発生したかわかりません。

私の時系列をggplotを使ってプロットしたいと思います。私は言うことができます

p <- ggplot(data,aes(x=time,y=expression))
p <- p + geom_point()

もちろん、x 軸の変数は隣同士にプロットされるため、t=10 と t=104 の間の距離は t=5 と t=6 と同じになります。だから私は何かを作ることができます

start <- ISOdate(2001, 1, 1, tz = "")
data$time <- start + data$time*60*60*12

これはほとんど機能しますが、現在、x 軸の目盛りは恐ろしく不正確な日時です。多分それらを再フォーマットできますか?しかし、「開始からの日数」という形式を作成する方法がとにかくわかりません。そして今では、かなり明白な何かを見逃しているというしつこい気持ちで、かなり長い間グーグルで検索してきました。私ですか?

4

2 に答える 2

9

これが探しているものかどうかわかりません (この関連する質問を参照してください)。scale_x 関数を使用して、軸を再フォーマットし、不規則性に対処できます。例えば:

p <- qplot(1:3, 1:3, geom='line') 
p + scale_x_continuous("", breaks=1:3, 
        labels = as.Date(c("2010-06-03", "2010-06-04", "2010-06-07")))

zooちなみに、多変量オブジェクトをプロットするために作成した関数は次のとおりです。

qplot.zoo <- function(x) {
  if(!inherits(x, "zoo")) stop("x must be a zoo object")
  x.df <- data.frame(dates=index(x), coredata(x))
  x.df <- melt(x.df, id="dates", variable="value")
  ggplot(x.df, aes(x=dates, y=value, group=value, colour=value)) + geom_line() + opts(legend.position = "none")
}
于 2010-07-23T19:08:12.450 に答える
4

time変数は、数値ではなく、因子または文字ベクトルのように聞こえます。あなたがそうするならば、data$time <- as.numeric(data$time)それはあなたの問題をうまく解決するかもしれません。

ggplotは、適切な種類のデータに適切な種類のスケールを使用するのに非常に優れています。(残念ながら、Rのデータインポートルーチンは一般的にあまり賢くありません...)

于 2010-07-23T19:13:34.350 に答える