GGPLOT lines en log y Y axis en conteo

En este post comparto el código para reproducir el siguiente gráfico con la data extraída del repositorio de la Universidad Johns Hopkings Repo

Librerias

library(ggplot2) ## Gráficos
library(ggpubr) ## El panel del gráfico
library(dplyr)  ## Data
library(directlabels) ## Para agregar las etiquetas al final de la lineas
library(rio)  ## Para importar la data

Código

### Link al repo ###
confirmed <- "https://raw.github.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
##############

###### Preparando la data############# 
WorldData<-import(file = confirmed)%>% ### import jala el archivo
  mutate(type="confirmed")%>% ### creo una variable 
  tidyr::gather(Fecha,Valor,-c(type,"Province/State",
                        "Country/Region",Lat,Long)) ### la convierto en formato "long"

WorldData=WorldData%>%dplyr::select(Country="Country/Region",
                                    Provincia="Province/State",
                                    type,
                                    Valor,
                                    Fecha)

paises<- c("Peru","Chile","Ecuador", "Brazil") ## Preparo lista de países 

####### Preparo mi subset para gráficar####### 
d1=WorldData%>%filter(type=="confirmed",
                   Country%in%paises,
                   Valor>0)%>%
  group_by(Country)%>%
  mutate(Fecha=as.Date(Fecha,"%m/%d/"))%>%  ### Formato Fecha 
  mutate(start = first(Fecha),
         Dstart=Fecha-start)%>%
  ungroup()%>%
  #filter(d_start<21)%>%
  mutate(log=log(Valor+0.01))%>%
  filter(Dstart>2)  ### Me quedo con la información a partir del segundo día

Gráfico

p=d1%>%
  ggplot(aes(x = Dstart,y=Valor,group=Country)) +
  geom_line(aes(col = Country))+
  scale_y_continuous(trans = "log10")+ #### Esta línea transforma la variable a escala log en base 10. El eje Y sigue siendo el conteo. 
  geom_dl(aes(label = Country), 
          method = list(dl.trans(x = x + 0.2), "last.points", cex = 0.8))+
  labs(y="Confirmados",x="Número de días desde el primer caso")
panel<-ggarrange(p,
          ncol=1,nrow=1,
          font.label = list(size = 10, color = "black", face = "bold", family = NULL)) ### Panel básico 

annotate_figure(panel,
                top = text_grob("Casos confirmados en escala log10", color = "#474785", face = "bold", size = 14),
                bottom = text_grob("Fuente: JHU", color = "black", hjust = 1, x = 1, face = "italic", size = 8)) ### Se pueden agregar notas
Avatar
José Incio
Ph.D. Candidate Political Science

My research interests include subnational politics, democracy, representation and political methodology.

Related