横軸が日付の折れ線グラフ
横軸が日付の折れ線グラフで、理想的な図がなかなかできず苦労しているので、紹介します。
こんなデータを使ってみます。日付と、ある植物の長さをイメージして勝手に作ったデータです。
Excelならこんな図になります。
まずはRでクラシックな図を作ってみます。
データを読み込み(csvから取り込んでもかまいません)
x<-as.Date(c("2022/6/5", "2022/7/21"))
y<-c(40, 80)
続いて図を作ります。
par(xaxt="n") #x軸の表示をしない
plot(x,y,type="b", xlim=as.Date(c("2022/6/1", "2022/7/31")), xlab="Month", ylab="Length")
par(xaxt="s") #x軸の表示をするように指定
axis.Date(1, at = seq(as.Date("2022/6/1"), as.Date("2022/8/1"), "month"), format="%m/%d")
最後の1行を以下のように指定すれば、好きな文字に変換できます。
axis.Date(1, at = seq(as.Date("2022/6/1"), as.Date("2022/8/1"), "month"), labels=c("June", "July", "August"))
目盛の位置が各月の1日にあるのですが、月の表示を目盛の真ん中に移動させてみます。
これも最初の3行は一緒で、最後の1行を以下のようにします。
axis.Date(1, at = seq(as.Date("2022/6/1"), as.Date("2022/8/1"), "month"), labels=F)
これでラベルのない軸になりました。続いて以下のように、各月の15日のところにラベルを表示するような指示をします。
axis(side=1, at=as.Date(c("2022/6/15", "2022/7/15")), tcl=0, labels=c("June", "July"))
できました!
次は、同じグラフをggplotで作ってみます。同じデータを使います。ただしデータフレームにする必要があるので、csvやテキストファイルを読み込んだ場合はそのままで、そうでなければデータフレームを作成します。ここではLD(length dataの意味)というデータフレームを作りました。
LD<-data.frame(date=x, length=y)
ではggplot2のパッケージを読み込み、以下のように入力します。
ggplot(LD, aes(x=as.Date(date), y=length))+
geom_line()+
scale_x_date(limit=as.Date(c("2022-06-01", "2022-08-01")),
breaks= "1 month", labels=NULL)+
theme_bw()+
geom_point()+
xlab("Month")+
ylab("Length")
月ごとのラベル配置(目盛の中間に配置)ですが、今のところ方法が見つかっていません。見つけたら更新します。
ひとまず、以下のようにしておきます。
ggplot(LD, aes(x=as.Date(date), y=length))+
geom_line()+
scale_x_date(limit=as.Date(c("2022-06-01", "2022-08-01")),
breaks= "1 month", date_labels="%m/%d")+
theme_bw()+
geom_point()+
xlab("Date")+
ylab("Length")
お問い合わせ先
〒739-8528 東広島市鏡山1-4-4 広島大学 統合生命科学研究科
082-424-7941 (直通)
tomiyama(at)hiroshima-u.ac.jp