3

気象データに表示されるような気象プロットを開発しようとしています-のようなものです。

ここに画像の説明を入力

毎日の値をプロットしたい(ただし、平均値は円で表示されます)。多面的(月と年ごと)が必要なため、ggplot2を使用しています。

st <- as.Date ("2009-1-1")
en <- as.Date ("2011-12-28")
date1 <- seq(st, en, "1 day")
year <- format(date1, "%Y")
month <- format (date1, "%b")
day <- as.numeric (format(date1, "%d"))

avgtm <- round (rnorm (length(date1), 50,5), 1)
maxtm <- avgtm + abs(rnorm (length (avgtm), 0, 5))
mintm <-  avgtm - abs(rnorm (length (avgtm), 0, 5))

myd <- data.frame ( year, month, day, avgtm, maxtm, mintm)
require(ggplot2)
qplot(day, avgtm, data = myd, geom = "line", col = "red") +
facet_grid(year ~ month) + theme_bw()

ここに画像の説明を入力

ここで大きな問題が 1 つあります。回線が月間で接続されます。

各月は最大までプロットされます (ただし、1 か月が 28 で終わる場合は、その月が空白のままになります)。 ここに画像の説明を入力

私が達成したいことを達成するためのスマートな方法はありますか?私は ggplot2 を試しましたが、他にも良いオプションがあるかもしれません。

編集:

月の最初の日に垂直線を追加して、月を区切ろうとしています。ここで私は月の最初の日を見つけようとしました:

 td = as.Date (seq(as.Date("2009/1/1"), as.Date("2011/12/28"), "months"))

これを使用して線をプロットしようとしました:

qplot(date, avgtm, data = myd, geom = "line", col = "red") +
  facet_wrap(~year, scales='free_x', ncol=1, nrow=3) +

   geom_vline(xintercept=td, linetype="dotted") + theme_bw()

しかし、エラーを実行しています: エラー: 無効なインターセプト タイプ: 数値ベクトル、関数、または関数の名前である必要があります

日付で垂直線をプロットするにはどうすればよいですか?

4

2 に答える 2

4

日付列を作成してから、年のみでファセットするのはどうですか

myd$date <- as.Date(paste(myd$year, myd$month, myd$day), format='%Y %b %d')

qplot(date, avgtm, data = myd, geom = "line", col = "red") +
  facet_wrap(~year, scales='free_x', ncol=1, nrow=3)

ここに画像の説明を入力

プロットに追加scales='free_x'することもできますが、解釈が難しくなります。

月と年にファセットを適用することで、ビューアーとプロット ツールに、プロットされた変数が連続していないことを伝えます。質問で指摘したように、これは正しくありません。したがって、ファセットはありません... 必要に応じて、月ごとまたは日ごとに目盛りを追加できます。

library(scales)
qplot(date, avgtm, data = myd, geom = "line", col = "red") +
      facet_wrap(~year, scales='free_x', ncol=1, nrow=3) +
      scale_x_date(breaks=date_breaks("month"), labels=date_format("%b"))

または、すべてを抽出day of yearして 1 つのプロットにプロットし、年ごとに色付けすることもできます。

myd$doy <- format(myd$date, '%j')
p <- ggplot(myd, aes(x=doy, y=avgtm, color=year, group=year))

p + geom_line()

また

p + geom_smooth()
于 2013-04-17T17:48:18.347 に答える