3

時間軸を自動的に設定するggplotを使用して、クラス「ts」の単変量時系列をプロットする方法はありますか?ベースグラフィックのplot.ts()に似たものが必要です。

また、最も粗い時間の粒度は1日であるように思われます。そうですか?私の仕事では、月次および四半期のデータを処理する必要があり、各観測値を月/四半期の開始/終了に割り当てると、月/四半期の長さが等しくないため、観測値の水平方向の間隔が不規則になります。それはもっと理にかなっているかもしれませんが、私の聴衆は月/四半期が定期的に間隔を置いて見られることに慣れています。

x軸を時間軸として、または独自のラベルを使用して数値軸として手動で設定することにより、上記のすべてを解決できることを知っています。私は特に、tsオブジェクトの時間情報を使用してこれを自動的に行うメソッドを探しています。

4

4 に答える 4

4

ggplot2 は ts-objects をサポートしていません: クラス date の日付とクラス POSIXct の時刻のみがサポートされています。そのため、最初にデータを適切なクラスに変換する必要があります。

例については、http://had.co.nz/ggplot2/scale_date.htmlをご覧ください。

于 2010-02-08T11:00:02.647 に答える
4

期間が年であると仮定して、 ts オブジェクトから POSIX 日付を生成する関数での私の大雑把な試み:

tsdates <- function(ts){
  dur<-12%/%frequency(ts)
  years<-trunc(time(ts))
  months<-(cycle(ts)-1)*dur+1
  yr.mn<-as.data.frame(cbind(years,months))
  dt<-apply(yr.mn,1,function(r){paste(r[1],r[2],'01',sep='/')})
  as.POSIXct(dt,tz='UTC')
}

これは ggplot で次のように使用できます。

qplot(tsdates(presidents),presidents,geom='line')

より完全なソリューションでは、複数の時系列をレイアウトできる必要があります。また、次のようなことができるように、観測時間に応じてポイントを自動的に整列できると便利です。

qplot(presidents,lag(presidents))
于 2010-02-09T03:54:17.353 に答える
2

?ts の例からの時系列データ。

gnp <- ts(cumsum(1 + round(rnorm(100), 2)), start = c(1954, 7), frequency = 12)

new.date <- seq(as.Date(paste(c(start(gnp),1), collapse = "/")), by = "month", length.out = length(gnp))

seq 関数は、日付オブジェクトを操作できます。上記の例では、開始日を指定し、毎月の頻度を指定して、作成する日付ベクトルの長さを示しています。

これが ggplot2 などを使用する前のデータ準備に役立つことを願っています。

上記の例を次のように data.frame に組み合わせることができます。

dat <- data.frame(date=new.date, value=gnp) 

これは、次のように ggplot でプロットできます。

ggplot(data=dat) + geom_line(aes(date, gnp))

ではごきげんよう、

ジェイ

于 2010-02-09T21:27:04.047 に答える