# Plotting new confirmed cases for Japan against date in semilog scale. # November 24, 2020: Made # December 22, 2020: Change color palette # January 8, 2021: 3 prefs were added # January 17, 2021: New action date has been added # February 8, 2021: Emergency is off at Tochigi pref # February 28, 2021: Emergency is off at several prefs # March 21, 2021: Emergency is off at several prefs # April 4, 2021: Japan total was added # May 8, 2021: Emergency added # June 20, 2021: Emergency is off except Okinawa # July 12, 2021: Emergency call for Tokyo # July 27, 2021: Last day inclusion # July 30, 2021: Emergency call for 4 prefs (Kanagawa, Saitama, Chiba, Osaka); corrected on 31st July # March 19, 2022: Lift of "man-en boshi" # September 27, 2022: Change data source from COVID19 package to MHLW Open Data # if (!require(COVID19)) { # install.packages("COVID19", dep=TRUE) # library(COVID19) # } url <- "https://covid19.mhlw.go.jp/public/opendata/newly_confirmed_cases_daily.csv" x <- read.csv(url) x$Date <- as.Date(x$Date, "%Y/%m/%d") minD <- min(x$Date) maxD <- max(x$Date) options(scipen=7) prefs <- c("Tokyo", "Hokkaido", "Osaka", "Fukuoka", "Hyogo", "Okinawa", "Aichi", "Kanagawa") prefsJ <- c("東京", "北海道", "大阪", "福岡", "兵庫", "沖縄", "愛知", "神奈川") cols <- 1:length(prefs) palette("Okabe-Ito") par(las=1) plot(ALL ~ Date, data=x, xlim=c(minD, maxD+30), ylim=c(1, 200000), col=length(cols)+1, lwd=2, axes=FALSE, log="y", type="l", frame=FALSE, xlab="時間経過(年)", ylab="新規確定患者報告数", main="COVID-19の都道府県別新規確定患者報告数の推移 [Ref.] 厚生労働省オープンデータ", sub=sprintf("%s まで", max(x$Date))) axis(1, c(as.Date(sprintf("2020-%02d-01", 1:12)), as.Date(sprintf("2021-%02d-01", 1:12)), as.Date(sprintf("2022-%02d-01", 1:10))), c(sprintf("20-%02d-01", 1:12), sprintf("21-%02d-01", 1:12), sprintf("2022-%02d-01", 1:10))) axis(2, c(1, 10, 100, 1000, 10000, 100000, 200000)) segments(as.Date("2020-02-28"), 1, as.Date("2020-02-28"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2020-02-28"), 50000, "全国一斉休校\n(効果なし)", pos=3) segments(as.Date("2020-04-08"), 1, as.Date("2020-04-08"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2020-04-08"), 100000, "緊急事態宣言\n発出", pos=3) segments(as.Date("2020-05-14"), 1, as.Date("2020-05-14"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2020-05-14"), 100000, "39県解除", pos=3) segments(as.Date("2020-06-19"), 1, as.Date("2020-06-19"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2020-06-19"), 100000, "東京解除", pos=3) segments(as.Date("2020-07-22"), 1, as.Date("2020-07-22"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2020-07-22"), 100000, "GoToキャン\nペーン", pos=3) segments(as.Date("2020-10-01"), 1, as.Date("2020-10-01"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2020-10-01"), 100000, "GoTo東京追加\nGoToイート開始", pos=3) segments(as.Date("2021-01-07"), 1, as.Date("2021-01-07"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-01-07"), 100000, "1都3県緊急\n事態宣言発出", pos=3) segments(as.Date("2021-01-14"), 1, as.Date("2021-01-14"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-01-14"), 10000, "2府5県緊急\n事態宣言追加", pos=3) segments(as.Date("2021-02-08"), 1, as.Date("2021-02-08"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2021-02-08"), 2, "栃木県緊急\n事態宣言解除", pos=3) segments(as.Date("2021-02-28"), 1, as.Date("2021-02-28"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2021-02-28"), 10000, "2府4県緊急\n事態宣言解除", pos=3) segments(as.Date("2021-03-21"), 1, as.Date("2021-03-21"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2021-03-21"), 100000, "1都3県緊急\n事態宣言解除", pos=3) segments(as.Date("2021-04-05"), 1, as.Date("2021-04-05"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-04-05"), 2, "6市蔓延防止\n重点措置開始", pos=3) segments(as.Date("2021-04-25"), 1, as.Date("2021-04-25"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-04-25"), 10000, "4都府県緊急\n事態宣言発出", pos=3) segments(as.Date("2021-05-12"), 1, as.Date("2021-05-12"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-05-12"), 100000, "愛知福岡緊急\n事態宣言発出", pos=3) segments(as.Date("2021-05-16"), 1, as.Date("2021-05-16"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-05-16"), 2000, "1道2県緊急\n事態宣言発出", pos=3) segments(as.Date("2021-06-20"), 1, as.Date("2021-06-20"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2021-06-20"), 2, "沖縄以外緊急\n事態宣言解除", pos=3) segments(as.Date("2021-07-12"), 1, as.Date("2021-07-12"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-07-12"), 10000, "東京緊急事態\n宣言発出", pos=3) segments(as.Date("2021-08-02"), 1, as.Date("2021-08-02"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-08-02"), 100000, "4府県緊急事\n態宣言発出\n(大阪・埼玉・\n千葉・神奈川)", pos=3) segments(as.Date("2021-08-20"), 1, as.Date("2021-08-20"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-08-20"), 50, "7府県緊急事\n態宣言発出\n(京都・兵庫・\n福岡・静岡・\n茨城・栃木・群馬)", pos=3) segments(as.Date("2021-08-27"), 1, as.Date("2021-08-27"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2021-08-27"), 2, "8道県緊急事\n態宣言発出\n(北海道・宮城・\n岐阜・愛知・\n三重・滋賀・\n岡山・広島)", pos=3) segments(as.Date("2021-09-30"), 1, as.Date("2021-09-30"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2021-09-30"), 100000, "19都道府県緊急\n事態宣言解除", pos=3) segments(as.Date("2022-01-09"), 1, as.Date("2022-01-09"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2022-01-09"), 100000, "3県蔓延防止発出\n(沖縄,山口,広島)", pos=3) segments(as.Date("2022-01-21"), 1, as.Date("2022-01-21"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2022-01-21"), 2, "1都12県蔓延\n防止発出", pos=3) segments(as.Date("2022-01-27"), 1, as.Date("2022-01-27"), 200000, lty=3, lwd=3, col="darkred") text(as.Date("2022-01-27"), 50, "1道2府15県\n蔓延防止発出", pos=3) segments(as.Date("2022-03-21"), 1, as.Date("2022-03-21"), 200000, lty=3, lwd=3, col="navy") text(as.Date("2022-03-21"), 100000, "蔓延防止解除", pos=3) for (i in prefs) { lines(x$Date, x[, i], col=cols[grep(i, prefs)], lwd=2) text(x$Date[length(x$Date)]+1, x[length(x$Date), i], prefsJ[grep(i, prefs)], pos=4) } text(x$Date[length(x$Date)]+1, x$ALL[length(x$ALL)], "全国", pos=4) legend("topleft", col=c(cols, length(cols)+1), lwd=2, legend=c(prefsJ, "全国"))