## ----setup, include=FALSE----------- library(tidyverse) library(knitr) library(magick) knitr::opts_chunk$set( fig.retina = 3, message = FALSE, warning = FALSE, out.width = "40%" ) ## ----------------------------------- library(gapminder) library(ggplot2) data(gapminder) g1<-ggplot( data=gapminder, aes(y=lifeExp, x= gdpPercap))+ geom_point(aes(color=continent))+ theme_minimal()+ ylab("Aspettativa di vita")+ xlab("PIL pro capite")+ scale_x_log10(labels=scales::dollar) #g1 ## ----------------------------------- g1 ## ----------------------------------- library(plotly) p1<-ggplotly(g1) p1 ## ----------------------------------- library(htmlwidgets) saveWidget(p1, "p1.html", selfcontained = T, libdir = "lib") ## ----------------------------------- g2<-ggplot( data=gapminder, aes(y=lifeExp, x= gdpPercap, text = paste( "Paese: ", country, "\n", "anno: ", year, "\n", sep = "")))+ geom_point(aes(color=continent, group=country))+ theme_minimal()+ ylab("Aspettativa di vita")+ xlab("PIL pro capite")+ scale_x_log10(labels=scales::dollar) ## ----------------------------------- ggplotly(g2) ## ----------------------------------- library(gganimate) a1<-ggplot( data=gapminder, aes(y=lifeExp, x= gdpPercap))+ geom_point(aes(color=continent, group=country))+ theme_minimal()+ ylab("Aspettativa di vita")+ xlab("PIL pro capite")+ scale_x_log10(labels=scales::dollar) ## ----------------------------------- A<-a1+ transition_states(year) + #<< ease_aes('linear')+ labs(title = "{closest_state}") ## ----------------------------------- A anim_save("animation1.gif") ## ----------------------------------- a1.2<-ggplot( data=gapminder, aes(y=lifeExp, x= gdpPercap))+ geom_point(aes(color=continent, group=country))+ theme_minimal()+ ylab("Aspettativa di vita")+ xlab("PIL pro capite")+ scale_x_log10(labels=scales::dollar)+ ease_aes('linear')+ labs(title = "{closest_state}") + transition_states(year , transition_length = 3, # 3/4 of total time for transitions state_length = 1, # 1/4 of time to display actual data wrap = FALSE) ## ----message=FALSE, warning=FALSE---- a1.2 ## ----------------------------------- A+ shadow_wake(wake_length = 0.5) ## ----------------------------------- A+ shadow_wake(wake_length = 0.8) ## ----------------------------------- a2<-ggplot( data=gapminder, aes(y=lifeExp, x= gdpPercap))+ geom_point(aes(color=continent, group=country, size=log(pop), alpha=.3), show.legend = FALSE) + theme_minimal()+ ylab("Aspettativa di vita")+ xlab("PIL pro capite")+ scale_x_log10(labels=scales::dollar)+ transition_states(year, transition_length = 3, state_length = 1 ) + ease_aes('linear')+ labs(title = 'Year: {closest_state}') + facet_wrap(~continent) #<< ## ----------------------------------- a2 ## ----------------------------------- #install.packages("av") library(av) df <- animate(a2, renderer = av_renderer('animation2.mp4'), width = 1280, height = 720, res = 104, fps = 25) utils::browseURL('animation2.mp4') ## ----------------------------------- storicoProvince <- read.csv(file = "https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-province/dpc-covid19-ita-province.csv", stringsAsFactors = FALSE) storicoProvince <- subset(storicoProvince, codice_provincia<=111) storicoProvince$denominazione_regione[storicoProvince$denominazione_regione %in% list("P.A. Trento", "P.A. Bolzano")] <- "Trentino-Alto Adige" ## ----------------------------------- library(zoo) covid_prov <- storicoProvince %>% group_by(codice_provincia) %>% mutate(diff_totale_casi = diff(c(0, totale_casi)), data=as.Date(data)) ## ----------------------------------- library(lubridate) covid_prov_sett <- covid_prov %>% mutate(week = week(data), year=year(data), time=year*100+week) %>% group_by(time,year, week,denominazione_regione, denominazione_provincia, codice_provincia) %>% summarise(diff_casi = sum(diff_totale_casi), data=min(data)) %>% arrange(year, week, denominazione_regione,denominazione_provincia) glimpse(covid_prov_sett) ## ----------------------------------- library(readr) ISTAT.prov <- read_csv("province.csv", col_types = cols(`Codice provincia` = col_integer()), skip = 1) Pop.prov <-ISTAT.prov %>% filter(Età=="Totale") %>% mutate(Tot.Pop=`Totale Maschi`+`Totale Femmine`) %>% select(codice_provincia="Codice provincia" , "Tot.Pop" ) ## ----------------------------------- inc.prov<- full_join(covid_prov_sett,Pop.prov, by="codice_provincia" ) inc.prov<-inc.prov %>% mutate (incidenza=10^5*diff_casi/Tot.Pop) ## ----------------------------------- inc.prov <- inc.prov %>% group_by(time) %>% arrange(year, week, desc(incidenza)) %>% mutate(rankingI = row_number()) %>% #<< filter(rankingI <=10) #<< ## ----------------------------------- covid_anim_prov0 <- inc.prov %>% filter(week==1) %>% ggplot() + geom_col(aes(rankingI, incidenza, fill = denominazione_regione))+ coord_flip(clip = "off", expand = FALSE) covid_anim_prov0 ## ----------------------------------- covid_anim_prov0.1 <- covid_anim_prov0+ scale_x_reverse() covid_anim_prov0.1 ## ----------------------------------- covid_anim_prov0.2<-covid_anim_prov0.1+ geom_text(aes(rankingI, incidenza, label = round(incidenza,0)), hjust=-0.1) + geom_text(aes(rankingI, y=0 , label = denominazione_provincia), hjust=1.1) + geom_text(aes(x=10, y=max(incidenza) , label = format(data, "%d %B %Y"))) covid_anim_prov0.2 ## ----------------------------------- covid_anim_prov0.3<-covid_anim_prov0.2+ theme_minimal() + theme( panel.grid = element_blank(), legend.position = "none", axis.ticks.y = element_blank(), axis.title.y = element_blank(), axis.text.y = element_blank(), plot.margin = margin(1, 4, 1, 3, "cm"))+ labs(y="", subtitle="per 100.000 abitanti", caption= "Dati Protezione civile", title="Incidenza settimanale") ## ----------------------------------- covid_anim_prov0.3 ## ----------------------------------- covid_anim_prov_base <- inc.prov %>% #<< ggplot() + geom_col(aes(rankingI, incidenza, fill = denominazione_regione)) + scale_x_reverse()+ geom_text(aes(rankingI, incidenza, label = round(incidenza,0)), hjust=-0.1) + geom_text(aes(rankingI, y=0 , label = denominazione_provincia), hjust=1.1) + geom_text(aes(x=10, y=max(incidenza) , label = format(data, "%d %B %Y")), vjust = 0.2, alpha = 0.5, col = "gray", size = 14) + coord_flip(clip = "off", expand = FALSE) + theme_minimal() + theme( panel.grid = element_blank(), legend.position = "none", axis.ticks.y = element_blank(), axis.title.y = element_blank(), axis.text.y = element_blank(), plot.margin = margin(1, 4, 1, 3, "cm"))+ labs(y="", subtitle="per 100.000 abitanti", caption= "Dati Protezione civile", title="Incidenza settimanale") ## ----------------------------------- covid_anim_prov<- covid_anim_prov_base + transition_states(data, state_length = 3, transition_length = 1) + enter_fade() + exit_fade() + ease_aes('linear') ## ----------------------------------- covid_anim_inc <- animate(covid_anim_prov, renderer = av_renderer('covid_incidenza_prov.mp4'), width = 1280, height = 720, res = 104, fps = 10, nframes = 200) utils::browseURL('covid_incidenza_prov.mp4') ## ----message=FALSE, warning=FALSE---- covid_anim_prov ## ----------------------------------- storicoRegioni <- read.csv( file = "https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-regioni/dpc-covid19-ita-regioni.csv", stringsAsFactors = FALSE) %>% mutate(data=as.Date(data)) ## ----------------------------------- plot_reg0<-storicoRegioni %>% filter(data>as.Date("2020-09-01")) %>% ggplot(aes(x=data, y=terapia_intensiva, group=denominazione_regione))+ geom_line(col="grey", alpha=0.2, size=2)+ geom_line(data=storicoRegioni %>% filter(data>as.Date("2020-09-01"),denominazione_regione=="Emilia-Romagna"), aes(y=terapia_intensiva, x=data),col="darkred", size=2)+ geom_line(data=storicoRegioni %>% filter(data>as.Date("2020-09-01"),denominazione_regione=="Lombardia"), aes(y=terapia_intensiva, x=data), col="darkgreen", size=2)+ annotate("text",x=as.Date("2020-09-15"), y=750, label="Lombardia", col="darkgreen")+ annotate("text",x=as.Date("2020-09-15"), y=500, label="Emilia-Romagna", col="darkred")+ theme_bw()+ labs(title = 'Terapia Intensiva. ', subtitle = "Emilia Romagna e Lombardia", y="Pazienti in TI", x="", caption="Fonte: Protezione Civile") ## ----------------------------------- plot_reg0+ transition_reveal(data) ## ----------------------------------- r2<-list() k<-unique(storicoRegioni$denominazione_regione) length(k) ## ----------------------------------- for (i in 1:21){ r2[[i]]<- storicoRegioni %>% filter(data>as.Date("2020-09-01")) %>% ggplot(aes(x=data, y=terapia_intensiva, group=denominazione_regione))+ geom_line(col="grey", alpha=0.2, size=2)+ geom_line(data=storicoRegioni %>% filter(data>as.Date("2020-09-01"),denominazione_regione==k[i]), aes(y=terapia_intensiva, x=data),col="pink", size=2)+ theme_bw()+ labs(title = 'Terapia Intensiva. ', subtitle = k[i], y="Pazienti in TI", x="", caption="Fonte: Protezione Civile") } ## ----------------------------------- r2[[5]] ## ----------------------------------- library(animation) saveGIF( for (i in 1:21) plot(r2[[i]]), movie.name = "regioni_covid.gif" )