RStudioでグラフを描いてみる--COVID-19
以下のようなスクリプトをRStudioで記述する。データは厚生労働省オープンデータをウェブから直接に読み込む。グラフ作成で直接的に使っているのはggplot2というパッケージである。結果のグラフは、この記事の最後に示している。
## 死亡者数
```{r,message=FALSE,warning=FALSE}
library(readr)
death_total <- read_csv("https://www.mhlw.go.jp/content/death_total.csv")
dat <- death_total
```
```{r}
Sys.setlocale("LC_TIME","C") #英語表記
dat$日付 <- as.Date(dat$日付)
as_of <- dat$日付[nrow(dat)]
datebreaks <- seq(as.Date("2020-01-01"),as.Date("2021-06-01"),by ="1 month")
```
```{r,echo=FALSE,warning=FALSE,message=FALSE}
library(ggplot2)
library(stringr)
library(scales)
d1 <- ggplot(dat,aes(x=日付,y=死亡者数))+
geom_line(color="grey20")+
ylim(0,15000)+
labs(title = "新型コロナウイルス死亡者数",subtitle = str_c(as_of,"までの結果"),caption = "厚生労働省オープンデータ\nhttps://www.mhlw.go.jp/content/death_total.csv",x="日付") +
scale_x_date(breaks = datebreaks,labels=date_format("%Y %b"))+
theme_minimal(base_family="HiraKakuProN-W3")+
theme(axis.text.x=element_text(angle = 30,hjust = 1))
d1
```
## 累積陽性者数
```{r,message=T,warning=T,echo=T}
library(readr)
pcr_positive_daily<- read_csv("https://www.mhlw.go.jp/content/pcr_positive_daily.csv")
dat <- pcr_positive_daily
colnames(dat)[2] <- "検査陽性者数"
Sys.setlocale("LC_TIME","C")
dat$日付 <- as.Date(dat$日付)
as_of <- dat$日付[nrow(dat)]
```
```{r}
累積 <- vector("integer",nrow(dat))
累積[1] <- dat$検査陽性者数[1] # 初日に初日の数を入れる
# 前日までの累積に当日の数を加えて計算
for (i in 2:nrow(dat)) {
累積[i] <- 累積[i-1] + dat$検査陽性者数[i]
}
# 列の追加
dat$累積 <- 累積
head(dat)
tail(dat)
Sys.setlocale("LC_TIME","C")
dat$日付 <- as.Date(dat$日付)
```
```{r}
library(ggplot2)
library(scales)
p <- ggplot(dat,aes(x=日付,y=累積))+
geom_line(color="grey20")+
ylim(0,800000)+
labs(title = "新型コロナウイルス陽性者数(累積)",caption = "厚生労働省オープンデータ\nhttps://www.mhlw.go.jp/content/pcr_positive_daily.csv",x="日付",y="累積人数", subtitle = str_c("PCR検査"," ",as_of,"までの結果")) +
scale_x_date(breaks = datebreaks,labels=date_format("%Y %b"))+
theme_minimal(base_family="HiraKakuProN-W3")+
theme(axis.text.x=element_text(angle = 30,hjust = 1))
p
```
## 移動平均
```{r,message=FALSE,warning=FALSE,echo=FALSE}
library(readr)
pcr_positive_daily<- read_csv("https://www.mhlw.go.jp/content/pcr_positive_daily.csv")
dat <- pcr_positive_daily
colnames(dat)[2] <- "検査陽性者数"
平均 <- vector("numeric",nrow(dat))
for (i in 7:nrow(dat)) {
平均[i] <- (dat[i,2] + dat[i-1,2] + dat[i-2,2] + dat[i-3,2] + dat[i-4,2] + dat[i-5,2] + dat[i-6,2])/7
}
平均 <- as.numeric(平均)
dat$平均 <- 平均
Sys.setlocale("LC_TIME","C")
dat$日付 <- as.Date(dat$日付)
as_of <- dat$日付[nrow(dat)]
datebreaks <- seq(as.Date("2020-01-01"),as.Date("2021-06-01"),by ="1 month")
```
```{r}
library(ggplot2)
g <- ggplot()+
geom_line(data=dat,aes(日付,平均),color="skyblue",size=1)+
geom_line(data=dat,aes(x=日付,y=検査陽性者数),color="grey70")+
labs(title = "新型コロナウイルス陽性者数(移動平均)",caption = "厚生労働省オープンデータ\nhttps://www.mhlw.go.jp/content/pcr_positive_daily.csv",x="日付",y="陽性者数", subtitle = str_c("PCR検査"," ",as_of,"までの結果")) +
scale_x_date(breaks = datebreaks,labels=date_format("%Y %b"))
```
```{r}
library(ggthemes)
g + theme_minimal(base_family="HiraKakuProN-W3") +
theme(axis.text.x=element_text(angle = 30,hjust = 1))
```
## stata
```{r}
mytheme <- theme_stata(base_family="HiraKakuProN-W3") + theme(axis.text.x=element_text(angle = 30,hjust = 1))
g + mytheme
p + mytheme
d1 + mytheme
```
## bw
```{r}
mytheme <- theme_bw(base_family="HiraKakuProN-W3") + theme(axis.text.x=element_text(angle = 30,hjust = 1))
g + mytheme
p + mytheme
d1 + mytheme
```
## light
```{r}
mytheme <- theme_light(base_family="HiraKakuProN-W3") + theme(axis.text.x=element_text(angle = 30,hjust = 1))
g + mytheme
p + mytheme
d1 + mytheme
```
以下の3つのグラフのthemeはstataである。
この記事が気に入ったらサポートをしてみませんか?