横軸が日付の折れ線グラフ

2022年06月24日 10:40

横軸が日付の折れ線グラフで、理想的な図がなかなかできず苦労しているので、紹介します。


こんなデータを使ってみます。日付と、ある植物の長さをイメージして勝手に作ったデータです。



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")



サイト内検索

お問い合わせ先

冨山 毅 Takeshi Tomiyama 〒739-8528 東広島市鏡山1-4-4 広島大学 統合生命科学研究科 082-424-7941 (直通)