Rで時系列データの折れ線グラフ ーggplot2による気温変化の分析ー

Rでデータ解析と可視化

Rで時系列データの分析を行います。2020年の熊本の気温変化データを使ってみます。

※更新 2021.9

↓↓↓関連した投稿です。時系列を両側2軸で違うスケール表示してますので、参考にされてください。

Rで両側2軸を異なるスケールに設定した折れ線グラフ ーgeom_lineー
以前、時系列データの折れ線グラフ表示について、下記リンクの投稿をさせていただきました。 今回は、前回表示した気温変化に加え、湿度変化についても同じ図にのせて表示したいと思います。 「単位や、推移するスケールも違うのでは?...

◆今回のポイント

①日付を名称でなく、日付として認識させる

②ggplot2のパッケージを使う

③グラフの表示を調整する

④できた図をプレゼンテーション!


 

日付で取得された時系列データの折れ線グラフを作成します。

今回使用したのは、気象庁のwebsiteに掲載されています熊本の気温データ(2020年)を使用させていただきました。

気象庁 過去の気象データ・ダウンロード

こちらから得られたデータを以下のようにして、csvで保存(temp_kumamoto2020.csv)しました。

日付(day)、平均気温(ave_temp)、最高気温(max_temp)、最低気温(min_temp)としています。

R Studioを立ち上げて、上のcsvデータを取り込んで作業します。

temp_kumamoto2020<-read.csv("temp_kumamoto2020.csv")
head(temp_kumamoto2020)
 day ave_temp max_temp min_temp
1 2020/1/1 3.4 9.9 -2.1
2 2020/1/2 6.4 12.1 1.7
3 2020/1/3 6.9 13.0 2.6
4 2020/1/4 6.7 13.4 1.0
5 2020/1/5 7.2 14.8 0.7
6 2020/1/6 9.5 14.0 3.8
temp_kumamoto2020[,1]<- as.Date(temp_kumamoto2020[,1],"%Y/%m/%d") #日付データに順番を付ける(dayの列([,1])が、Y/m/dは、それぞれY=年、m=月、d=日という意味であることを認識させた)
head(temp_kumamoto2020)
 day ave_temp max_temp min_temp
1 2020-01-01 3.4 9.9 -2.1
2 2020-01-02 6.4 12.1 1.7
3 2020-01-03 6.9 13.0 2.6
4 2020-01-04 6.7 13.4 1.0
5 2020-01-05 7.2 14.8 0.7
6 2020-01-06 9.5 14.0 3.8

as.Date()を使って、日付の情報を、名称ではなく日付として認識させ、順番に並べることができるようにしました。(①)

 

次からは、ggplot2のパッケージを使います。

ggplot2はRにおける可視化において、美しい描画ができることや、作業のしやすさなどから、広く使われています。

install.packages("ggplot2") #インストール済の方は不要です。
library(ggplot2)
ggplot()+geom_line(data =temp_kumamoto2020, aes(x=day, y=ave_temp, color="ave_temp"),size=1)+geom_line(data =temp_kumamoto2020, aes(x=day, y=max_temp, color="max_temp"),size=1)+geom_line(data =temp_kumamoto2020, aes(x=day, y=min_temp,color="min_temp"),size=1)

geome_line(data=データ名, aes(x=横軸はdayの列, y=縦軸はave_tempの列, color=”このデータの名称(後で色名の指定とつなげる)”), size=線の太さ) を意味します。

上のコードを入れると、下の図ができます。(②)

気になるところを整えていきましょう。




 

図の背景、線の色、横軸の表示、縦軸ラベル を直します。

install.packages("scales")
library(scales)
ggplot()+geom_line(data =temp_kumamoto2020, aes(x=day, y=ave_temp, color="ave_temp"),size=1)+geom_line(data =temp_kumamoto2020, aes(x=day, y=max_temp, color="max_temp"),size=1)+geom_line(data =temp_kumamoto2020, aes(x=day, y=min_temp,color="min_temp"),size=1)+theme_bw()+scale_color_manual(values = c("black","purple", "green"))+theme(legend.position = c(0.95, 0.95),legend.justification = c(0.95, 0.95),legend.background=element_rect(fill="white",color="black"))+scale_x_date(breaks = seq(as.Date("2020-01-01"), as.Date("2020-12-31"), by="2 month"),labels=date_format("%Y/%m"))+labs(y="temp")

・図の背景

+theme_bw()で灰色の背景を白に、枠を線で囲みます。

・線の色

+scale_color_manual(values = c(“black”,”purple”, “green”)) で、geom_line()で指定した順番に線の色を 黒、紫、緑に変更します。

・凡例の場所と微調整

+theme(legend.position = c(0.95, 0.95),legend.justification = c(0.95, 0.95), legend.background=element_rect(fill=”white”,color=”black”))

凡例の場所をlegend.position = で指定しています。右上c(1,1)、左上c(0,1)、右下c(1,0)と指示します。

枠線が重なるのがきになったので、少し線から離した(0.95, 0.95) としています。

・横軸の日付表示

scaleパッケージをインストールして、日付の表示を調整します。

+scale_x_date(breaks = seq(as.Date(“最初の日付”), as.Date(“最後の日付”), by=”何か月おきの表示”), labels=date_format(“%年/%月”)) 横軸の範囲を指定して、年月の表示にした。

・縦軸のラベル

+labs(y=”縦軸ラベル名”)

これで、ある程度整った図ができました。(③)

 

このグラフから、プレゼンテーションをしてみよう。

熊本の気温変化から読み取れる、対策や準備などが考えられるかと思いました。(④)

以下の記事では、新型コロナ陽性者数の時系列データを扱っていますので、参考にして下さい。

Rで時系列データの可視化:新型コロナ陽性者数の県別動向 ーgeom_lineー
厚労省のオープンデータとして、各都道府県における1日当たりのコロナ陽性患者数情報を入手することができます。 熊本県の新型コロナ陽性患者数動向において、相関の高い都道府県はどこか?について調べたいと思います。 患者数動向は、時系列データの...
Rで相関係数のヒートマップによる可視化:新型コロナ陽性者数の都道府県別動向 ーcorrplotー
以前の投稿で、熊本県の新型コロナ陽性者数動向と他都道府県との相関関係について書きました。 厚労省のオープンデータを用いて、引き続きデータ解析を行います。 #1 #2まで以前の投稿と同じ部分。 patient_pre...

コメント

タイトルとURLをコピーしました