Hola Mundo
Este #DatosDeMiercoles me costó. Quería utilizar la librería Rokemon que nos enseño @danidlsa y combinarla con gganimate. Primero no instalaba Rokemon, luego la función no se podía animar… Todo un lio! Pero lo logré. He tenido que reescribir la función gghealth para acerla compatible con gganimate! Mira más en el código de esta semana (que además estrena este portafolio)
COMENTA UNA 🍍 SI LOGRAS HACER LA GRÁFICA!
Ahora sí! el código para hacer está gráfica
# Hecho con gusto para
# Twitter #DatosDeMiercoles por @R4DS_es
library(tidyverse)
library(Rokemon)
library(gganimate)
# leer datos
pokemon <- read_csv("https://bit.ly/2xKuGfT")
# cambiando nombre a columna
names(pokemon)[7] <- 'vida'
# preparando datos
poke_tidy <- pokemon %>%
gather(key = "puntos",
value = "valor",
c('vida',
'ataque',
'defensa',
'velocidad')) %>%
group_by(tipo_1, puntos) %>%
summarise(media_tipo = mean(valor)) %>%
ungroup()
## Aqui es donde cambiamos la función gghealth() de
## la libreria Rokemon!
# para ver la funcion hay cargar la libreria Rokemon
# luego escribir en consola gghealth (sin parentesis)
# eso muestra la funcion y es la base que cambiamos
# valores que usa Rokemon
fracs <- (poke_tidy$media_tipo - min(poke_tidy$media_tipo))/
(max(poke_tidy$media_tipo) - min(poke_tidy$media_tipo))
cuts <- c(0.8, 0.4, 0.2)
hp_col <- 0
hp_col[fracs < cuts[3]] <- 4
hp_col[fracs >= cuts[3]] <- 3
hp_col[fracs >= cuts[2]] <- 2
hp_col[fracs >= cuts[1]] <- 1
poke_tidy$hp_col <- hp_col
init.size <- 4
max_val <- 128
# haciendo la grafica animada
anim <- poke_tidy %>%
ggplot(aes(x = tipo_1, y = media_tipo)) +
geom_segment(aes(xend = tipo_1),
yend = max_val, y = 0, size = init.size, lineend = "round") +
geom_segment(aes(xend = tipo_1),
yend = max_val, y = 0, size = init.size - 1, lineend = "round", color = 'white') +
geom_segment(aes(xend = tipo_1,
yend = media_tipo, colour = hp_col),
y = 0, size = init.size - 1, lineend = "butt") +
coord_flip() +
scale_colour_gradient(low = "#66CD00", high = "#FF4400") +
theme_status() +
theme(text = element_text(size = 25),
axis.title = element_blank())+
transition_states(puntos) +
ggtitle('Promedio en {closest_state}')
animate(anim,
fps = 50,
nframes = 500)
anim_save('poke_miercoles.gif',
width = 8,
height = 4,
units = 'in')