Nuestro compañero de trabajo, Estatikoz,realizó el siguiente código para visualizar la información de gapminder.

  • Si bien la idea del gráfico es interesante, el objetivo de Estatikoz no era ver sólo la información del año 2000
  • Tampóco le interesa sólo la información de Europa
  • Por último, en gapminder también hay información sobre la esperanza de vida (lifeExp) que es relevante en el análisis.
library(tidyverse)
library(treemapify)
library(gapminder)
library(viridis)

gapminder <- gapminder_unfiltered

gapminder %>% 
  filter(year==2000, continent=='Europe') %>%
  ggplot(., aes(area = pop, fill = gdpPercap, label = country)) +
  geom_treemap() +
  geom_treemap_text(fontface = "italic", colour = "white", place = "centre",
                    grow = TRUE)+
  scale_fill_viridis(option = 'C')+
  labs(title = 'Treemap Europe', subtitle = 'Año 2000',caption = 'Tamaño según población.')

El objetivo es transformar este código en una visualización Shiny que incorpore todos los elementos que faltan.

Hagamos una guía paso a paso

  1. Pensamos qué queremos mostrar ✅
  2. Escribimos código estático para un caso particular.✅
  3. Pensamos qué partes queremos generalizar.✅

  4. Armamos una función que tome como parámetros aquello que generalizamos

grafico_treemap <- function(){
  
}
  1. Armamos un shiny estático que nos muestre el resultado de la función con parámetros fijos
# El shiny mejor hacerlo en un archivo separado, que se llame app.r
  1. Agregamos los inputs en el ui
  2. reemplazamos los parámetros fijos por los de input en el server
  3. Agregamos texto y otros elementos ‘cosméticos’
  • hint: A veces esta bueno pegar las cosas con \(glue\)
  • hint: Qué pasa con el ancho y largo del gráfico? lo podemos mejorar?
  • hint: Que tipo de widget nos conviene usar para el input de años? podemos mirar las opciones acá: inputs
LS0tCnRpdGxlOiBTaGlueSBhcHBzCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCmRhdGU6ICIiCnN1YnRpdGxlOiBQcsOhY3RpY2EgaW5kZXBlbmRpZW50ZQotLS0KCgpOdWVzdHJvIGNvbXBhw7Flcm8gZGUgdHJhYmFqbywgX0VzdGF0aWtvel8scmVhbGl6w7MgZWwgc2lndWllbnRlIGPDs2RpZ28gcGFyYSB2aXN1YWxpemFyIGxhIGluZm9ybWFjacOzbiBkZSBgZ2FwbWluZGVyYC4gCgotIFNpIGJpZW4gbGEgaWRlYSBkZWwgZ3LDoWZpY28gZXMgaW50ZXJlc2FudGUsIGVsIG9iamV0aXZvIGRlIF9Fc3RhdGlrb3pfIG5vIGVyYSB2ZXIgc8OzbG8gbGEgaW5mb3JtYWNpw7NuIGRlbCBhw7FvIDIwMDAKLSBUYW1ww7NjbyBsZSBpbnRlcmVzYSBzw7NsbyBsYSBpbmZvcm1hY2nDs24gZGUgRXVyb3BhCi0gUG9yIMO6bHRpbW8sIGVuIGdhcG1pbmRlciB0YW1iacOpbiBoYXkgaW5mb3JtYWNpw7NuIHNvYnJlIGxhIGVzcGVyYW56YSBkZSB2aWRhIChgbGlmZUV4cGApIHF1ZSBlcyByZWxldmFudGUgZW4gZWwgYW7DoWxpc2lzLiAKCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeSh0cmVlbWFwaWZ5KQpsaWJyYXJ5KGdhcG1pbmRlcikKbGlicmFyeSh2aXJpZGlzKQoKZ2FwbWluZGVyIDwtIGdhcG1pbmRlcl91bmZpbHRlcmVkCgpnYXBtaW5kZXIgJT4lIAogIGZpbHRlcih5ZWFyPT0yMDAwLCBjb250aW5lbnQ9PSdFdXJvcGUnKSAlPiUKICBnZ3Bsb3QoLiwgYWVzKGFyZWEgPSBwb3AsIGZpbGwgPSBnZHBQZXJjYXAsIGxhYmVsID0gY291bnRyeSkpICsKICBnZW9tX3RyZWVtYXAoKSArCiAgZ2VvbV90cmVlbWFwX3RleHQoZm9udGZhY2UgPSAiaXRhbGljIiwgY29sb3VyID0gIndoaXRlIiwgcGxhY2UgPSAiY2VudHJlIiwKICAgICAgICAgICAgICAgICAgICBncm93ID0gVFJVRSkrCiAgc2NhbGVfZmlsbF92aXJpZGlzKG9wdGlvbiA9ICdDJykrCiAgbGFicyh0aXRsZSA9ICdUcmVlbWFwIEV1cm9wZScsIHN1YnRpdGxlID0gJ0HDsW8gMjAwMCcsY2FwdGlvbiA9ICdUYW1hw7FvIHNlZ8O6biBwb2JsYWNpw7NuLicpCgpgYGAKCgpfX0VsIG9iamV0aXZvIGVzIHRyYW5zZm9ybWFyIGVzdGUgY8OzZGlnbyBlbiB1bmEgdmlzdWFsaXphY2nDs24gU2hpbnkgcXVlIGluY29ycG9yZSB0b2RvcyBsb3MgZWxlbWVudG9zIHF1ZSBmYWx0YW4uX18KCgo+IEhhZ2Ftb3MgdW5hIGd1w61hIHBhc28gYSBwYXNvIAoKIVtdKGltZy9tZW1lLmpwZyl7d2lkdGg9MzAwfQoKCjEuIFBlbnNhbW9zIHF1w6kgcXVlcmVtb3MgbW9zdHJhciBgciBlbW86OmppKCJjaGVjayIpYAoyLiBFc2NyaWJpbW9zIGPDs2RpZ28gX2VzdMOhdGljb18gcGFyYSB1biBjYXNvIHBhcnRpY3VsYXIuYHIgZW1vOjpqaSgiY2hlY2siKWAKMy4gUGVuc2Ftb3MgcXXDqSBwYXJ0ZXMgcXVlcmVtb3MgZ2VuZXJhbGl6YXIuYHIgZW1vOjpqaSgiY2hlY2siKWAKCjQuIEFybWFtb3MgdW5hIGZ1bmNpw7NuIHF1ZSB0b21lIGNvbW8gcGFyw6FtZXRyb3MgYXF1ZWxsbyBxdWUgZ2VuZXJhbGl6YW1vcwoKYGBge3J9CmdyYWZpY29fdHJlZW1hcCA8LSBmdW5jdGlvbigpewogIAp9CmBgYAoKCgo1LiBBcm1hbW9zIHVuIHNoaW55IGVzdMOhdGljbyBxdWUgbm9zIG11ZXN0cmUgZWwgcmVzdWx0YWRvIGRlIGxhIGZ1bmNpw7NuIGNvbiBwYXLDoW1ldHJvcyBmaWpvcwoKYGBge3J9CiMgRWwgc2hpbnkgbWVqb3IgaGFjZXJsbyBlbiB1biBhcmNoaXZvIHNlcGFyYWRvLCBxdWUgc2UgbGxhbWUgYXBwLnIKYGBgCgo2LiBBZ3JlZ2Ftb3MgbG9zIGlucHV0cyBlbiBlbCB1aQo3LiByZWVtcGxhemFtb3MgbG9zIHBhcsOhbWV0cm9zIGZpam9zIHBvciBsb3MgZGUgaW5wdXQgZW4gZWwgc2VydmVyCjguIEFncmVnYW1vcyB0ZXh0byB5IG90cm9zIGVsZW1lbnRvcyAnY29zbcOpdGljb3MnCgoKCi0gaGludDogQSB2ZWNlcyBlc3RhIGJ1ZW5vIHBlZ2FyIGxhcyBjb3NhcyBjb24gJGdsdWUkCi0gaGludDogUXXDqSBwYXNhIGNvbiBlbCBhbmNobyB5IGxhcmdvIGRlbCBncsOhZmljbz8gbG8gcG9kZW1vcyBtZWpvcmFyPwotIGhpbnQ6IFF1ZSB0aXBvIGRlIF93aWRnZXRfIG5vcyBjb252aWVuZSB1c2FyIHBhcmEgZWwgaW5wdXQgZGUgYcOxb3M/IHBvZGVtb3MgbWlyYXIgbGFzIG9wY2lvbmVzIGFjw6E6IFtpbnB1dHNdKGh0dHBzOi8vc2hpbnkucnN0dWRpby5jb20vdHV0b3JpYWwvd3JpdHRlbi10dXRvcmlhbC9sZXNzb24zLykKCg==