File:Koronavirustapausten trendi 1.svg

Original file(SVG file, nominally 900 × 450 pixels, file size: 600 KB)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

edit
Description
Suomi: Koronavirustapausten trendi Suomessa
Date
Source Own work
Author Merikanto


R script to generate image
###################################################
## COVID-19 data fetch from github COVID-19 data site
## visualization of daily cases with ggplot
##
## R code
##   24.7.2022
## v 0002.0003



day1='15/08/2020'
day2='01/04/2022'

today=Sys.Date()-15

## choices
## 1 finnish wiki data, 2 aggregated cases data 
## 3 solanpaa finnish data 4 thl cube json data
load_data_from=3


## 1 from finnish wiki, 2 cases from net, 3 from net 2
plottaa=4  ## 1 cases 2 deaths 3 casesdeaths 1 4 casesdaeths 2
tulosta_svg=1

tulosfilee1="./kases.svg"

## ggolot smooth curves pars
spanni=0.2
#spanni=0.05
#spanni=0.1


metodi="loess"

#datelimits1=c('15/08/2020', '20/05/2021')
datelimits1=c(day1,day2)

#beginday1='15/08/2020'
beginday1=day1

#print(today)

today1=format(today, "%d/%m/%Y")  
today2=format(today, "%Y/%m/%d")  

print(today1)
#print(today2)

#stop(-1)

datelimits1=c(beginday1, today1)

## dates of dataset

paivat1=seq(as.Date("2020/4/1"), as.Date(today2), "days")




## not_installed=1
# if (not_installed==1)
#{
# install.packages("ggplot2")
# install.packages("plotly")
# install.packages("R0")
# install.packages("mgcv")
# install.packages("repmis")
# install.packages("lubridate")
# install.packages("fs")
# install.packages("tidyverse")
# install.packages("svglite")
# install.packages("caTools")
# install.packages("jsonlite")
# install.packages("stringi")
# install.packages("stringr")
# install.packages("readr")
# install.packages("data.table")
# install.packages("XML")
# install.packages("rvest")
# install.packages("readtext")
# install.packages("datamart")
#}

## NOTE date limits change this

library(caTools)
library(ggplot2)
library(mgcv)
library(repmis)
library(lubridate)
library(tidyverse)

library(rvest)
library(readtext)
library(stringi)
library(stringr)
#library(datamart)
library(XML)
library(readr)
library(data.table)

library(jsonlite)




calculate_r0 <- function(time1, time2, val1, val2) 
{
	td=time2-time1
	gr0<-log(val2/val1)
	gr=gr0/td
	td = log(2)/gr
	tau<-5.0
	k<-log(2.0)/td
	r0<-exp(k*tau)
	return(r0)
}

moving_average <- function(x, w, FUN, ...) 
{

  if (w < 1) {
    stop("Window length: mustbe greater than 0")
  }
  output <- x
  for (i in 1:length(x)) {
    lower_bound <- i - w + 1
    if (lower_bound < 1) {
      output[i] <- NA_real_
      ## !!! assume NA 0
      output[i] <- 0
    } else {
      output[i] <- FUN(x[lower_bound:i, ...])
    }
  }
  return (output)
}

calculate_multiple_r0 <- function(daata1) {

  lenu1<-length(daata1)
  
  
  daata2<-1:lenu1
  
	for (n in 2:lenu1){
		valju1=daata1[n-1]
		valju2=daata1[n]
		timex1=0
		timex2=1

		r0<-calculate_r0(0, 1, valju1, valju2)
		daata2[n]<-r0

		#print (r0)
		}
	return(daata2)
	
}

load_data_from_finnish_wiki<-function()
{

url1="https://fi.wikipedia.org/wiki/Suomen_koronaviruspandemian_aikajana"
destfile1="./ward0.txt"

download.file(url1, destfile1)
texti000<-readtext(destfile1) 
texti0<-texti000$text

etsittava1="1. huhtikuuta 2020 alkaen"
len1=nchar(texti0)
k1=regexpr(pattern=etsittava1, texti0)
k1b=len1-k1
texti1=strtail(texti0,k1b)
sink("out1.txt")
print (texti1)
sink()
etsittava2="</table>"
k2=regexpr(pattern=etsittava2, texti1)
texti2=strhead(texti1,k2)

sample1<-minimal_html(texti2)
tabu1 <- html_table(sample1, fill=TRUE)[[1]]
colnames(tabu1) <- c("V1","V2", "V3","V4", "V5","V6", "V7","V8" )

#print(tabu1)

sairaalassa00<-tabu1$V4
sairaalassa=as.integer(sairaalassa00)

teholla00<-tabu1$V5
teholla=as.integer(teholla00)

uusiatapauksia00<-tabu1$V3
uusiatapauksia0<-gsub(" ", "", uusiatapauksia00)
uusia_tapauksia=as.integer(uusiatapauksia0)

uusiakuolleita00<-tabu1$V7
uusiakuolleita1=as.integer(uusiakuolleita00)

uusiakuolleita2<-uusiakuolleita1
uusiakuolleita2[uusiakuolleita2<0]<-0
uusia_kuolleita<-uusiakuolleita2

toipuneita00<-tabu1$V8
toipuneita01<-gsub(" ", "", toipuneita00)
toipuneita0<-gsub("[^0-9.-]", "", toipuneita01)
toipuneita=as.integer(toipuneita0)

tapauksia00<-tabu1$V2
tapauksia01<-gsub(" ", "", tapauksia00)
tapauksia0<-gsub("[^0-9.-]", "", tapauksia01)

tapauksia=as.integer(tapauksia0)

kuolleita00<-tabu1$V6
kuolleita=as.integer(kuolleita00)


aktiivisia_tapauksia=tapauksia-kuolleita-toipuneita


#print (paivat1)
#print (teholla)
#print (sairaalassa)
#print (tapauksia)
#print (kuolleita)
#print (toipuneita)
#print (uusia_tapauksia)
#print (uusia_kuolleita)
#plot(paivat1,aktiivisia_tapauksia)


xy<-data.frame(paivat1, uusia_tapauksia)
#xy<-data.frame(paivat1, sairaalassa)

xyz<-data.frame(paivat1, sairaalassa, teholla) 
dfout1<-data.frame(paivat1, aktiivisia_tapauksia, uusia_tapauksia, sairaalassa, teholla, uusia_kuolleita ) 

names(dfout1)<-c("Pvm", "Aktiivisia_tapauksia","Uusia_tapauksia", "Sairaalassa", "Teholla", "Uusia_kuolleita")

write.csv2(dfout1, "./sairaalassa.csv",row.names=FALSE )

return(xy)
}

load_data_from_aggregated<-function()
{
###################################################################################
###################################################################################
## fetch the data

dfine000 <- fread("https://datahub.io/core/covid-19/r/countries-aggregated.csv")
dfine<-as.data.frame(dfine000)

head(dfine)
#class(dfine)

#print(dfine)

tail(dfine)

#stop(-1)

dfinland <- dfine[ which(dfine$Country=='Finland'), ]

#head(dfinland)

print(dfinland)

quit(-2)


kols <- c("Date", "Confirmed","Recovered","Deaths")

tapaukset <- dfinland[kols]

#head(tapaukset)

len1=nrow(tapaukset)

#len1

len2=len1-1

len3=len2

confirmed<-tapaukset$Confirmed
deaths<-tapaukset$Deaths

dailycases <- vector()
dailycases <- c(dailycases, 0:(len2))
dailydeaths <- vector()
dailydeaths <- c(dailydeaths, 0:(len2))

m=0
dailycases[1]<-tapaukset$Confirmed[1]
#dailydeaths[1]<-tapaukset$Deaths[1]
dailydeaths[1]<-0

#confirmed
#deaths

m=1
for(n in 2:(len3+1)) {
	
	a<-confirmed[n]
	b<-confirmed[m]
	#print (a)
	#print (b)
	cee<- (a-b)
	#print(cee)
	dailycases[n]=cee	
	m=m+1
}

mm=1
for(nn in 2:(len3+1)) {
	
	aa<-deaths[nn]
	bb<-deaths[mm]
	#print ("_")
	#print (aa)
	#print (bb)
	ceb=aa-bb
	#if (ceb<0) ceb=0
	#print(ceb)
	dailydeaths[nn]=ceb	
	mm=mm+1
}

#deaths

#dailycases

#dailydeaths

dfout1<-dfinland

#print(nrow(dfinland))
#print(length(dailydeaths))

dfout1 <- cbind(dfout1, data.frame(dailycases))
dfout1 <- cbind(dfout1, data.frame(dailydeaths))

#head(dfout1)

dfout2<-within(dfout1, rm(Country))

names(dfout2) <- c('Date','Confirmed','Recovered','Deaths', 'DailyConfirmed','DailyDeaths')

#head(dfout2)

write.csv2(dfout2, "/Users/himot/akor1/finland_data1.csv");

daate1<-dfout2$Date
dailydeaths1<-dfout2$DailyDeaths
dailycases1<-dailycases

#daate1

#daate2<-gsub("2020-", "", daate1)
daate2<-daate1

leenu<-length(daate2)

#alkupvm<-50
alkupvm<-1

daate3<-daate2[alkupvm:leenu]
dailydeaths3<-dailydeaths1[alkupvm:leenu]
dailycases3<-dailycases1[alkupvm:leenu]

#daate3
#dailydeaths3

    
 # barplot(dailydeaths3, main="Koronaviruskuolemat päivittäin vuonna 2020",
 # names.arg=daate3) 
  
      
  dataf1 <- data.frame("Date" = daate3, "Paivitt_kuolemat"=dailydeaths3)
# str(dataf1)    
 
   dataf2 <- data.frame("Date" = daate3, "Paivitt_tapaukset"=dailycases3)
# str(dataf2)  
 
 write.csv(dataf1, "/Users/himot/akor1/dailydeaths1.csv", row.names=T)
 write.csv(dataf2, "/Users/himot/akor1/dailycases1.csv", row.names=T)

 indf1 <- read.csv(file = '/Users/himot/akor1/dailycases1.csv')
 #head(indf1)

 cases1<-indf1$Paivitt_tapaukset
 dates1<-indf1$Date

 len1=length(cases1)

 dates2<-as.Date(dates1)
 paivat<-1:len1	
 
 xy<-data.frame(daate3, dailycases3)
 
	
}

download_solanpaa_finnish_data<-function()
{
	solanpaa_fi="https://covid19.solanpaa.fi/data/fin_cases.json"
	cache_file="solanpaa_fi.json"

	download.file(solanpaa_fi, cache_file)

	j1 <- fromJSON(cache_file)
	
	#print(head(j1))

  ## maybe errori
	dates<-as.Date(j1$date)
	
	dailycases<-j1$new_cases
	dailydeaths<-j1$new_deaths
	

    dataf1 <- data.frame("Date" = dates, "Paivitt_kuolemat"=dailydeaths) 
    dataf2 <- data.frame("Date" = dates, "Paivitt_tapaukset"=dailycases)
 
	write.csv(dataf1, "./dailydeaths1.csv", row.names=T)
	write.csv(dataf2, "./dailycases1.csv", row.names=T)
	
	xy0<-data.frame(dates, dailycases, dailydeaths)
	names(xy0)<-c("Dates", "Cases","Deaths")
	xy<-na.omit(xy0)
	
	return(xy)	
	
}	

lataa_thl_tapaukset_kuolleet<-function()
{
    url1<-"https://sampo.thl.fi/pivot/prod/fi/epirapo/covid19case/fact_epirapo_covid19case.json?row=measure-492118&column=dateweek20200101-508804L"
	cube1 <- fromJSONstat(url1, naming = "label", use_factors = F, silent = T)
	res01 <- cube1[[1]]
	#res00
	url2<-"https://sampo.thl.fi/pivot/prod/fi/epirapo/covid19case/fact_epirapo_covid19case.json?row=measure-444833&column=dateweek20200101-508804L"
	cube2 <- fromJSONstat(url2, naming = "label", use_factors = F, silent = T)
	res02 <- cube2[[1]]
	#res02

	#stop (-1)
	paiva=as.Date(res01$dateweek20200101)
	kuolleet=as.integer(res01$value)
	tapaukset=as.integer(res02$value)

	kuolin_prosentit=kuolleet/tapaukset
	kuolin_prosentit=kuolin_prosentit*10000
	kuolin_prosentit=as.integer(kuolin_prosentit)
	kuolin_prosentit=as.double(kuolin_prosentit)
	kuolin_prosentit=kuolin_prosentit/100.0

	#print (paiva)
	#print (kuolleet)
	#stop(-1)
	#print (tapaukset)
	#print (kuolin_prosentit )

	df1<-data.frame(paiva,tapaukset, kuolleet, kuolin_prosentit) 

	names(df1)<-c("Paiva", "Tapauksia", "Kuolleita", "Kuolinprosentti")
	#write.csv2(df1, "./kuolleet_ikaryhmittain.csv", sep = ";" )

	write.csv(df1, "./thl_tapaukset_kuolleet.csv")
	
	xy0<-data.frame(paiva, tapaukset)
	names(xy0)<-c("Dates", "Cases")
	xy<-na.omit(xy0)
	
	#return(df1)
	
	
	}
  



###################################################################################
## main



#datta<-load_data_from_aggregated()
#datta<-load_data_from_finnish_wiki()

#print(datta)

#stop(-1)

if(load_data_from==1)
{
	xy<-load_data_from_finnish_wiki()
	print (xy)
}

if(load_data_from==2)
{
	xy<-load_data_from_aggregated()
}

if(load_data_from==3)
{
	xy<-download_solanpaa_finnish_data()
}

if(load_data_from==4)
{
	xy<-lataa_thl_tapaukset_kuolleet()
}


 datta<-xy
 
 #print(datta)
 
 
 #stop(-1)
 
 

 select_datelimit_begin=as.Date(beginday1,format="%d/%m/%Y")
 select_datelimit_end=as.Date(today1)

 #format(select_datelimit_begin, "%Y-%m-%d")

 #print(select_datelimit_begin)

 #print(select_datelimit_end)
 #2020-12-16

 #xy2<-xy[xy$Dates >= select_datelimit_begin & xy$Dates <= select_datelimit_end]

 xy2<-datta[datta$Dates >= select_datelimit_begin,]
 
 #print(xy2)
 
 dates2<-xy2$Dates
 dailycases3<-xy2$Cases
 dailydeaths3<-xy2$Deaths
 
 dailydeaths3[dailydeaths3<0]<-0
 
 xy2<-data.frame(dates2, dailycases3, dailydeaths3)
 
 names(xy2)<-c("dates2", "dailycases3", "dailydeaths2")
	
 
 
 
 #print (dates2)
 #print(dailycases3)
 
 #stop(-1)
 

  
col = c("black", "red", "green", "blue", "magenta", "cyan")
 

if(tulosta_svg==1)
{
	svg(filename="./tapaukset.svg", width=10 ,height=5, pointsize=12)
}


  
if(plottaa==1)
{

	print ("ggplot")
	ggplot(xy2, aes(x =dates2 , y = dailycases3)) +ylim(0,900)+xlim(as.Date(datelimits1, format="%d/%m/%Y") )+
	ggtitle("Koronavirustapaukset Suomessa: syksy 2020 - talvi 2021") +
	xlab("Kuukausi") + ylab("Tapaukset")+
	theme(title=element_text(size=20), axis.text=element_text(size=20,face="bold"),axis.title=element_text(size=20,face="bold"))+ 
	geom_line(color="#a00000", size=3.5) +
	geom_smooth( fill="#ffa0a0",span=spanni, method=metodi, level=0.8)+
	geom_smooth( fill="#ff9090", span=spanni,method=metodi, level=0.7) +
	geom_smooth(color="red", fill="#ff0000", span=spanni, method=metodi,level=0.5) 
	
	# geom_hline(yintercept=1.0, linetype="dashed", color = "red", size=1)

}


if(plottaa==2)
{

	print ("ggplot")
	ggplot(xy2, aes(x =dates2 , y = dailydeaths3)) +ylim(0,20)+xlim(as.Date(datelimits1, format="%d/%m/%Y") )+
	ggtitle("Koronaviruskuolemat Suomessa: syksy 2020 - talvi 2021") +
	xlab("Kuukausi") + ylab("Kuolemat")+
	theme(title=element_text(size=20), axis.text=element_text(size=20,face="bold"),axis.title=element_text(size=20,face="bold"))+ 
	geom_point(color="#000000", size=3.0) +
	geom_smooth( fill="#a0a0a0",span=spanni, method=metodi, level=0.8)+
	geom_smooth( fill="#909090", span=spanni,method=metodi, level=0.7) +
	geom_smooth(color="black", fill="#000000", span=spanni, method=metodi,level=0.5) 
	
	# geom_hline(yintercept=1.0, linetype="dashed", color = "red", size=1)

}


if (plottaa==3) {
 
	coeff <- 15

	ylim.prim <- c(0, 900)  
	ylim.sec <- c(0, 20)  

	b <- diff(ylim.prim)/diff(ylim.sec)
	a <- b*(ylim.prim[1] - ylim.sec[1])
 

  	ggplot(xy2, aes(x=dates2), color="Uusia", fill="Uusia") +
  	xlim(as.Date(datelimits1, format="%d/%m/%Y") )+
    theme_light()+
  	geom_col(aes(y= a + dailydeaths3*b, color="Kuolleita"), fill="black",size=2)+
	geom_line(aes(y=dailycases3, color="Uusia"),fill="white", size=2)+
	geom_smooth( fill="#a0a0a0",span=spanni, method=metodi, level=0.8)+
	geom_smooth( fill="#909090", span=spanni,method=metodi, level=0.7) +
	geom_smooth(color="black", fill="#000000", span=spanni, method=metodi,level=0.5) +
	scale_y_continuous("Uusia", sec.axis = sec_axis(~ (. - a)/b, name = "Kuolleita/pv")) +
	geom_smooth( fill="#a0a0a0",span=spanni, method=metodi, level=0.8)+
	geom_smooth( fill="#909090", span=spanni,method=metodi, level=0.7) +
	geom_smooth(color="black", fill="#000000", span=spanni, method=metodi,level=0.5) +
	scale_color_manual(name="Tapauksia",breaks = c("Uusia", "Kuolleita"),
                        values=c("red", "black") ) +
                  
                        
    ggtitle("Koronapandemia 2021") +
	xlab("Kuukausi") +   
                        
    theme(axis.line.y.right = element_line(color = "black"), 
			axis.ticks.y.right = element_line(color = "black"),
			axis.text.y.right = element_text(color = "black"), 
			axis.title.y.right = element_text(color = "black")
        ) +
     
     		theme(axis.line.y.left = element_line(color = "darkred"), 
			axis.ticks.y.left = element_line(color = "darkred"),
			axis.text.y.left = element_text(color = "darkred"), 
			axis.title.y.left = element_text(color = "darkred")
        ) +
        
        theme(title=element_text(size=18, face="bold"), 
			axis.text=element_text(size=18,face="bold"),
			axis.title=element_text(size=18,face="bold"),
			legend.title=element_text(size=18, face="bold"), 
			legend.text=element_text(size=18, face="bold")
		) 
     
}



if (plottaa==4) {
 
	coeff <- 10

	ylim.prim <- c(0, 800)  
	ylim.sec <- c(0, 20)  

	b <- diff(ylim.prim)/diff(ylim.sec)
	a <- b*(ylim.prim[1] - ylim.sec[1])
 

  	ggplot(xy2, aes(x=dates2), color="Uusia", fill="Uusia", name="Uusia/pv") +
  	xlim(as.Date(datelimits1, format="%d/%m/%Y") )+
    theme_light()+
    xlab("Kuukausi") + ylab("Tapaukset")+
  	geom_point(aes(y= a + dailydeaths3*b, color="Kuolleita"),size=0.3 )+
  	geom_smooth(aes(y= a + dailydeaths3*b, color="Kuolleita"), fill="#808080",span=spanni, method=metodi, level=0.6)+
  	geom_smooth(aes(y= a + dailydeaths3*b, color="Kuolleita"), fill="#404040",span=spanni, method=metodi, level=0.3)+
  	geom_smooth(aes(y= a + dailydeaths3*b, color="Kuolleita"), fill="#101010",span=spanni, method=metodi, level=0.15)+
#	geom_point(aes(y=dailycases3, color="Uusia"),fill="white", size=0.5)+
	geom_point(aes(y=dailycases3, color="uusia"),fill="white", size=0.5)+

	geom_smooth(aes(y= dailycases3, color="Uusia"), fill="#ff8080",span=spanni, method=metodi, level=0.6)+
	geom_smooth(aes(y= dailycases3, color="Uusia"), fill="#ff4040",span=spanni, method=metodi, level=0.3)+
	geom_smooth(aes(y= dailycases3, color="Uusia"), fill="#8f1010",span=spanni, method=metodi, level=0.15)+
	

	scale_y_continuous("Uusia", sec.axis = sec_axis(~ (. - a)/b, name = "Kuolleita/pv")) +
	theme(legend.position="none")
	
#	scale_color_manual(name="Tapauksia",breaks = c("Uusia tapauksia", "Uusia kuolleita"),
 #                       values=c("red", "black") ) 
                  
                        
 #   ggtitle("Koronapandemia 2021") +
#	xlab("Kuukausi")   
                   
#    theme(axis.line.y.right = element_line(color = "#404040"), 
#			axis.ticks.y.right = element_line(color = "#404040"),
#			axis.text.y.right = element_text(color = "#404040"), 
#			axis.title.y.right = element_text(color = "#404040")
 #       ) +
     
#     		theme(axis.line.y.left = element_line(color = "#ff4040"), 
#			axis.ticks.y.left = element_line(color = "#ff4040"),
#			axis.text.y.left = element_text(color = "#ff4040"), 
#			axis.title.y.left = element_text(color = "#ff4040")
#        ) +
        
#        theme(title=element_text(size=18, face="bold"), 
#			axis.text=element_text(size=18,face="bold"),
#			axis.title=element_text(size=18,face="bold"),
#			legend.title=element_text(size=18, face="bold"), 
#			legend.text=element_text(size=18, face="bold")
#		) +
#		*/
		
		
	#	+		theme(legend.position = c(0.2, 0.8))
     
}


if(tulosta_svg==1)
{
dev.off()
}

Licensing

edit
I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.

File history

Click on a date/time to view the file as it appeared at that time.

(newest | oldest) View (newer 10 | ) (10 | 20 | 50 | 100 | 250 | 500)
Date/TimeThumbnailDimensionsUserComment
current11:22, 24 July 2022Thumbnail for version as of 11:22, 24 July 2022900 × 450 (600 KB)Merikanto (talk | contribs)update
11:22, 24 July 2022Thumbnail for version as of 11:22, 24 July 2022576 × 432 (1 KB)Merikanto (talk | contribs)Update
11:03, 24 July 2022Thumbnail for version as of 11:03, 24 July 2022900 × 450 (620 KB)Merikanto (talk | contribs)Update
05:42, 14 April 2022Thumbnail for version as of 05:42, 14 April 2022900 × 450 (560 KB)Merikanto (talk | contribs)Update
10:09, 8 December 2021Thumbnail for version as of 10:09, 8 December 2021900 × 450 (89 KB)Merikanto (talk | contribs)update
06:03, 20 September 2021Thumbnail for version as of 06:03, 20 September 2021900 × 450 (88 KB)Merikanto (talk | contribs)Update
12:15, 24 August 2021Thumbnail for version as of 12:15, 24 August 2021900 × 450 (87 KB)Merikanto (talk | contribs)Update
08:39, 15 July 2021Thumbnail for version as of 08:39, 15 July 2021900 × 450 (85 KB)Merikanto (talk | contribs)Update
12:29, 23 May 2021Thumbnail for version as of 12:29, 23 May 2021900 × 450 (80 KB)Merikanto (talk | contribs)Upload
11:33, 23 May 2021Thumbnail for version as of 11:33, 23 May 2021900 × 450 (80 KB)Merikanto (talk | contribs)Upload
(newest | oldest) View (newer 10 | ) (10 | 20 | 50 | 100 | 250 | 500)

There are no pages that use this file.

Metadata