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.
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 = ""))
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
#install.packages("plotly")
library(plotly)
ggplotly(p)
To do:
nota).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))