ggplot2のバージョンを上げたら棒グラフの書き方が変わっていた
はじめに
- 作者: 山本義郎,藤野友和,久保田貴文
- 出版社/メーカー: オーム社
- 発売日: 2015/11/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
また、dplyrやggplot2など比較的新しいけど最近のRには必須とも言うべきパッケージが使われており、サンプルコードを動かしながらRでどんなことができるのかを知るには良い本なんじゃないかな、と思っています。
ggplot2パッケージのバージョンを上げたらサンプルコードの一部が動かなくなった
ggplot2パッケージは2015/12/15にver2.0.0がリリースされましたが、それを使ってサンプルコードを実行すると、棒グラフ描画の部分がエラーになるようになってしまいました。
具体的にはchapter15.Rの38行目以降の
# 日別の集計 tw.daily <- tw.df %>% mutate(twdate=as.Date(created)) %>% group_by(twdate) %>% summarize(cnt = n()) tw.daily qplot(twdate, cnt, data=tw.daily, geom="bar", stat="identity")
を実行すると
> qplot(twdate, cnt, data=tw.daily, geom="bar", stat="identity") Error: stat_count() must not be used with a y aesthetic. In addition: Warning message: `stat` is deprecated
と表示されます。
どうやら集計した値をy軸に指定して棒グラフを描くのは止めて、qplot関数の集計機能を使えということのようです。
なので上記コードは
# 日別の集計 qplot(as.Date(created), data=tw.df, geom="bar", xlab="twdate", ylab="cnt")
とすれば動くようになります。
同様に、52行目以降の時間別集計の部分は
# 時間別の集計 tw.hourly <- tw.df %>% mutate(twhour=as.POSIXct(format(created, "%Y-%m-%d %H:00:00"))) %>% group_by(twhour) %>% summarize(cnt = n()) tw.hourly qplot(twhour, cnt, data=tw.hourly, geom="bar", stat="identity")
を、
# 時間別の集計 library(lubridate) qplot(floor_date(created, "hour"), data=tw.df, geom="bar", xlab="twhour", ylab="cnt")
とすれば大丈夫です。