Importar datos

library(tidyverse)
library(lubridate)
library(scales) # para manipular los breaks en ggplot usando tiempo
data <- read_csv("../data/the_viper_turks_fast_imperial_age.csv")
data
## # A tibble: 53 x 10
##    tiempo aldeanos madera comida   oro piedra soldados poblacion_r poblacion_p
##    <time>    <dbl>  <dbl>  <dbl> <dbl>  <dbl>    <dbl>       <dbl>       <dbl>
##  1 00'00"        3      0      0     0      0        1           4           5
##  2 00'30"        4      0      4     0      0        1           5          15
##  3 01'00"        5      0      5     0      0        1           6          15
##  4 01'30"        6      0      6     0      0        1           7          15
##  5 02'00"        7      1      6     0      0        1           8          15
##  6 02'30"        8      2      6     0      0        1           9          15
##  7 03'00"       10      4      6     0      0        1          11          15
##  8 03'30"       11      4      7     0      0        1          12          15
##  9 04'00"       12      4      7     0      0        1          13          15
## 10 04'30"       14      4     10     0      0        1          15          20
## # ... with 43 more rows, and 1 more variable: nota <chr>

Columna tiempo está formato de time en hh:mm:ss. En la columna poblacion_r(de población real) guarda la población total del jugador (aldeanos y soldados) y la columna poblacion_p(de población potencial) la capacidad de población.

Manipulación

Preparación de los datos para hacer gráficas.

data <- data %>% 
  filter(!is.na(tiempo)) %>% # elimina una fila de NA's
  pivot_longer(cols = c("madera", "comida", "oro", "piedra"), 
                      names_to = "recurso", 
                      values_to = "n_aldeanos") %>% 
  mutate(recurso = factor(recurso)) %>% 
  mutate(tiempo = as_datetime(tiempo)) %>% 
  replace_na(list(nota = ""))

Gráficas

p <- ggplot(data = data, aes(x = tiempo, y = n_aldeanos, color = factor(recurso)))+
  geom_line( size = 1.5, alpha = 0.8, lineend = "round")+
  labs( title =  "Partida ranked de The Viper en 1v1" ,
        subtitle = "Paso rápido a imperial por The Viper usando turcos, solo un TC",
        color = "aldeanos en:",
        y = "cantidad de aldeanos", x ="tiempo (minuto:segundo)")+
  scale_y_continuous(n.breaks = max(data$n_aldeanos))+
  scale_x_datetime(date_breaks = "90 secs" ,  labels = date_format("%M:%S"))+
  theme(legend.position = "bottom", 
        axis.text.x = element_text(angle = 0))+
  scale_color_manual(values=c("#FF0000", "#8B4513", "#DAA520", "#808080"))
p

probando ggploty

#install.packages("plotly")
library(plotly)
ggplotly(p)

To do:

  • [] usar highcharter.
  • [] plot aldeanos/militares (con geom_area).
  • [] colores de fondo.
  • [] agregar lineas verticales para marcar si pica/pasa de edad (columna nota).

Agregando lineas verticales

unique(data$nota)
##  [1] ""                                   "pasando a feudal"                  
##  [3] "pica a castillo"                    "vende los 200 de piedra"           
##  [5] "pasa a castillo, U y taller"        "cuartel"                           
##  [7] "vende madera, pica a imperial"      "arqueria"                          
##  [9] "mejora flecha en herreria"          "segunda mejora en herreria, flecha"
p + 
  geom_vline(xintercept = unique(data$tiempo[data$nota =="pasando a feudal"]))+
  geom_vline(xintercept = unique(data$tiempo[data$nota =="pica a castillo"]))+
  geom_vline(xintercept = unique(data$tiempo[data$nota =="vende madera, pica a imperial"]))+
  geom_text(aes(x=unique(data$tiempo[data$nota =="pasando a feudal"])-15, 
                label="pica a feudal", y=8),
            colour="black", angle=90, text=element_text(size=10))+
    geom_text(aes(x=unique(data$tiempo[data$nota =="pica a castillo"])-15, 
                label="pica a castillo", y=8),
            colour="black", angle=90, text=element_text(size=10))+
    geom_text(aes(x=unique(data$tiempo[data$nota =="vende madera, pica a imperial"])-15, 
                label="pica a imperial", y=8),
            colour="black", angle=90, text=element_text(size=10))

p + 
  geom_vline(xintercept = unique(data$tiempo[data$nota =="pasando a feudal"]))+
  geom_vline(xintercept = unique(data$tiempo[data$nota =="pica a castillo"]))+
  geom_vline(xintercept = unique(data$tiempo[data$nota =="vende madera, pica a imperial"]))+
  geom_text(aes(x=unique(data$tiempo[data$nota =="pasando a feudal"]), 
                label="pica a feudal", y=17),
            colour="black", angle=0, text=element_text(size=10))+
    geom_text(aes(x=unique(data$tiempo[data$nota =="pica a castillo"]), 
                label="pica a castillo", y=18),
            colour="black", angle=0, text=element_text(size=10))+
    geom_text(aes(x=unique(data$tiempo[data$nota =="vende madera, pica a imperial"]), 
                label="pica a imperial", y=17),
            colour="black", angle=0, text=element_text(size=10))