グラフの描画はExcelで挿入 - グラフが一番簡単。
だけど使ってみたくなるR言語。
R言語の導入については、以前簡潔にまとめた。
描画
- まず用意したデータファイル .csvを
read.csv()
で読み込む。
ここではcovid19.csv。現在進行形の新型コロナウイルス感染者数の推移。
値はアメリカ ジョンズ・ホプキンス大学 Mapping 2019-nCoVのページ(systems.jhu.edu/research/public-health/ncov/ 追)リンク切れ)から。閲覧時(毎日決まった時刻ではない)の値とこちらのページ(github.com/CSSEGISandDATA/COVID-19)から取得した値。
※ 一応covid19.csvファイルは、こちらに保存。詳細データは大元へ。
Excel等に入力後、カンマ区切りファイル .csvへ変換。
読み込んだ後、文字化けを起こす場合、文字コードをチェック。
R起動後、ファイル - 作業ディレクトリの変更で、作業ディレクトリ(covid19.csvファイルがあるディレクトリ)を選択。
data <- read.csv("covid19.csv",header=T)
1行目が列名の場合、header=T
をつける。つけないと1行目もデータ扱いとなって不具合が生じる。
1列目(DAY)の日付(2020/3/1など)は、Date型に変換しておかないと順序がおかしくなる。
data[,1] <- as.Date(data[,1],"%Y/%m/%d")
- plot()で描画。
plot(data[,1],data[,2],type="l")
1列目(DAY)が横軸、2列目(JAPAN)が縦軸。
type="l"
をつけないと点プロット。線で結ばれない。
なおR言語では2は2列目。他の言語だと0から始まるので3列目。
plot(data$DAY,data$JAPAN,type="l")
でも同じ。
横軸(X軸)の日付表示がいまいちなので手直し。
グラフは、メインの点や線の描画より軸・ラベル、凡例の描画のほうが面倒。
いったんxaxt="n"
で描かないようにする。
plot(data[,1],data[,2],type="l",xaxt="n")
次に
par(xaxt="s")
でX軸を描くようにする。
par()
はパラメーターを変更する関数。
axis()
で座標軸を新たに描く。xaxt="n"
でいったん消したのは上書きされてしまうため。
axis.Date(1,at=seq(min(data$DAY),max(data$DAY),"days"),format="%m/%d")
といった具合。
最初の引数1はグラフの下(X軸)。2が左(Y軸),3が上,4が右。
at=…
は、軸の目盛。seq()
は数列を生成する関数。ここでは左から最小値、最大値、目盛間隔(日ごと)。
format
は、実際に表示する形式。
X軸、Y軸のラベルも気になるので、もう一度やり直し。
xlab
、ylab
でX軸、Y軸のラベルを付け替え。
plot(data[,1],data[,2],type="l",xaxt="n",xlab="日付",ylab="感染者数(日本)[人]")
par(xaxt="s")
の後、axis.Date(…
このグラフだけだと急増しているようにみえる。
多重描画
データのうちY軸最大のITALYについて同じ要領で描画。
plot(data[,1],data[,5],type="l",xaxt="n",xlab="日付",ylab="感染者数[人]")
par(xaxt="s")
axis.Date(1,at=seq(min(data[,1]),max(data[,1]),"days"),format="%m/%d")
points()
で、IRAN、JAPANのデータを重ね合わせ。
points(data[,1],data[,4],type="l",lwd=3)
points(data[,1],data[,2],type="l",lwd=5)
lwdは線の太さ。
colで色を指定。SOUTH KOREAとSPAIN。
points(data$DAY,data[,3],type="l",lwd=2,col="brown")
points(data$DAY,data[,6],type="l",lwd=2,col="blue")
ltyで線の形式を指定。FRANCEとGERMANYとU.S.A.。
points(data$DAY,data[,7],type="l",lwd=2,col="green",lty="dashed")
points(data$DAY,data[,8],type="l",lwd=2,col="orange",lty="dotted")
points(data$DAY,data[,9],type="l",lwd=2,col="pink",lty="dotdash")
あとは凡例 legend
。
legend("topleft",c("日本","SOUTH KOREA","IRAN","ITALY","SPAIN","FRANCE","GERMANY","U.S.A."),
lwd=c(5,2,3,1,2,2,2,2),
col=c("black","brown","black","black","blue","green","orange","pink"),
lty=c("solid","solid","solid","solid","solid","dashed","dotted","dotdash"))
手書きの線みたい。
このグラフだと日本平穏にみえる。
見せ方次第で印象が変わる。
ggplot2パッケージもある。