次のようなデータフレームがあるとします。
hist <- data.frame(date=Sys.Date() + 0:13,
counts=1:14)
曜日別の総数をプロットしたいのですが、ライン点をつなげてみます。次の式はポイントそれぞれの値について:
hist <- transform(hist, weekday=factor(weekdays(date),
levels=c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')))
ggplot(hist, aes(x=weekday, y=counts)) + geom_point(stat='summary', fun.y=sum)
これらを線 ( geom_line()
) で接続しようとすると、ggplot はグループごとに 1 つのデータ観測しかないというエラーを出し、ポイント間に線を描くことができません。
これは理解できます。曜日ごとに 1 本の線 (因子レベル) を描画しようとしているのです。
ggplot で、曜日が数値であると仮定するには (行の目的のみ) どうすればよいでしょうか。day_of_week
月曜日は 0、火曜日は 1 などの別の列を用意する必要があるのでしょうか。
ベストアンサー1
問題を正しく理解していれば、レイヤーを指定しgroup=1
て追加すればstat_summary()
問題は解決するはずです。
ggplot(hist, aes(x=weekday, y=counts, group=1)) +
geom_point(stat='summary', fun.y=sum) +
stat_summary(fun.y=sum, geom="line")