Una gráfica rápida para ver a cuántas personas ha matado Rambo (y cómo)

De vez en cuando entro a ver el blog de FlowingData de Nathan Yau (lo recomiendo ampliamente para todo aquel que quiera aprender alguna que otra cosilla sobre la elaboración -y visualización- de gráficas y temas relacionados). En este blog encontré algo que me pareció chistoso: el número de muertos que ha matado Rambo (clasificados de acuerdo a si Rambo llevaba o no camisa a la hora de cometer el asesinato).

Para entretenerme un rato decidí hacer la gráfica en R (claro, no me quedó tan bonita como la de don Nathan Yau por varias razones… creo que él uso Adobe Illustrator para dejar su gráfica así). Los datos los obtuve de este post del L.A. Times (al parecer el autor del post se la pasó viendo las películas y contando el número de muertitos a manos de Rambo -una buena idea para pasar un fin de semana ¿no? Mmmm…).

En fin, si quieren hacer la gráfica les dejo el “script” que utilicé. Necesitarán instalar el paquete “ggplot2”.


#Primero creamos un vector de caracteres que repita el nombre de la película de acuerdo al número de muertos en la película correspondiente. A continuación transformamos el vector de caracteres a un factor y en tercer lugar ordenamos las etiquetas del factor de acuerdo al número de muertes, de menos a más).
asesinatos = c("First Blood", rep("First Blood Part II",58), rep("Rambo III",78), rep("John Rambo",83))
asesinatos = factor(asesinatos, levels = c("First Blood", "First Blood Part II", "Rambo III", "John Rambo"))
asesinatos = factor(asesinatos, levels = names(sort(table(asesinatos),decreasing=FALSE)))

# Hacemos también un vector de caracteres para indicar cuántas veces traía Rambo camisa o no (shirt on, short off) y, de nuevo, lo transformamos a un factor para poder manipularlo con ggplot2.
camisa = c(rep("shirt on",13),rep("shirt off",46), rep("shirt on",33),rep("shirt off", 45), rep("shirt on",83))
camisa = factor(camisa, levels = c("shirt on", "shirt off"))

#Juntamos los dos factores en una sola base de datos (o, como lo llama R, un objeto de tipo data.frame)
data = data.frame(asesinatos, camisa)

#Y hacemos la grafica
grafica = ggplot(data, aes(x=asesinatos)) + #Aqui indicamos de qué objeto obtenemos los datos
		geom_bar(aes(fill=camisa), binwidth=3) + # Decimos a ggplot2 que queremos una gráfica de barras
		xlab("Película") + ylab("# de muertos") + # Decimos a ggplot2 el nombre que queremos en el eje de las x y de las y
		labs(title="Personas que ha matado Rambo\n(¿Usó camisa?)") + #Este es el título principal de la gráfica
		scale_fill_manual(values=c("#E69F00","#56B4E9"),
				name="¿Usó camisa?",  #colores de las barras y nombre de la etiqueta
				labels=c("Con camisa", "Sin camisa")) #nombre de los "niveles" de la etiqueta
grafica

El resultado es este (y sí, como dice Nathan Yau, se ve que Rambo se volvió cada vez más sanguinario pero, también, cada vez más moralino) :

MuertesRambo

Advertisements

2 comments

  1. humehe · · Reply

    Matplotlib en python o gnuplot+octave son otras opciones para hacer gráficas bonitas.

    1. Sí… pero no hay tiempo para aprender tantos lenguajes de programación. Si hay buenos tutoriales para python con GIS avísenme.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: