File:Koronavirustapausten trendi 1.svg
From Wikimedia Commons, the free media repository
Jump to navigation
Jump to search
Size of this PNG preview of this SVG file: 800 × 400 pixels. Other resolutions: 320 × 160 pixels | 640 × 320 pixels | 1,024 × 512 pixels | 1,280 × 640 pixels | 2,560 × 1,280 pixels | 900 × 450 pixels.
Original file (SVG file, nominally 900 × 450 pixels, file size: 600 KB)
File information
Structured data
Captions
Summary
[edit]DescriptionKoronavirustapausten trendi 1.svg |
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:
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.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 11:22, 24 July 2022 | 900 × 450 (600 KB) | Merikanto (talk | contribs) | update | |
11:22, 24 July 2022 | 576 × 432 (1 KB) | Merikanto (talk | contribs) | Update | ||
11:03, 24 July 2022 | 900 × 450 (620 KB) | Merikanto (talk | contribs) | Update | ||
05:42, 14 April 2022 | 900 × 450 (560 KB) | Merikanto (talk | contribs) | Update | ||
10:09, 8 December 2021 | 900 × 450 (89 KB) | Merikanto (talk | contribs) | update | ||
06:03, 20 September 2021 | 900 × 450 (88 KB) | Merikanto (talk | contribs) | Update | ||
12:15, 24 August 2021 | 900 × 450 (87 KB) | Merikanto (talk | contribs) | Update | ||
08:39, 15 July 2021 | 900 × 450 (85 KB) | Merikanto (talk | contribs) | Update | ||
12:29, 23 May 2021 | 900 × 450 (80 KB) | Merikanto (talk | contribs) | Upload | ||
11:33, 23 May 2021 | 900 × 450 (80 KB) | Merikanto (talk | contribs) | Upload |
You cannot overwrite this file.
File usage on Commons
There are no pages that use this file.
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 720pt |
---|---|
Height | 360pt |