library(tidyverse)

Objetivo


El objetivo de este trabajo es mostrar las funcionales y estructuras principales de ggplot2.


Introduccion a la estructura de ggplot2


GGplot 2 empieza siempre la función con ggplot(). GGplot() crea un sistema de coordenadas al que puedes agregar capas.

El primer argumento de ggplot() es el dataset. En este caso es data = mpg.

A partir de ahi trabajamos con las diferentes capas de la funcion:

Veamos un ejemplo:

ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy))

En este caso, podemos añadir una tercera variable de nuestro dataset como class añadiendolo dentro de nuestro argumento como un componente denominado “aesthetic” o estético.

Un “aesthetic” es básicamente una propiedad visual de los objetos en el grafico. Aqui dentro podemos incluir aspectos como el tamaño, la forma, o el color .

ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy, color = class))

Un concepto que debemos de tener en mente es el scaling.

Asignara automaticamente un nivel único del aes (en este caso el color) a cada valor único de la variable.

A la hora de generar subplots la función face_wrap nos facilita la implementacion.

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_wrap(~ class,nrow = 2)

Como hemos mencionado anteriormente, un geom es el objeto geometrico que un gráfico utiliza para representar la informacion. Podemos tener de todo tipo, ( puntos, barras..etc).

En este caso geom_smooth nos permite definir una línea diferente para cada variable, con un tipo de linea diferente para cada valor único de cada variable. Por ejemplo; en este primer grafico separa los coches en tres lineas en base a su valor drv.

Tambien, podemos añadir el argumento group, lo que en consecuencia agrupara automaticamente los datos para estos geoms.

ggplot(data = mpg) + 
  geom_smooth(mapping = aes(x = displ, y = hwy,linetype = drv))

ggplot(data = mpg) + 
  geom_smooth(mapping = aes(x = displ, y = hwy,group = drv))

ggplot(data = mpg) + 
  geom_smooth(mapping = aes(x = displ, y = hwy,color = drv))

Un aspecto a tener en cuenta, es todo lo relacionado con la duplicidad de codigo. Por ejemplo, si en vez de plotear en el eje Y la variable “Hwy” quisieramos visualizar otra cualquier en vez de tener que cambiarlo en diferentes lineas podemos escalar el mapping a un nivel mas global dentro de ggplot() lo que afecta de manera global al codigo y es más agil.

Si por otro lado, lo añadimos dentro de un geom() le dará una importancia local para el layer, unica y exclusivamente.

El siguiente plot es el ejemplo idoneo de localizar data en cada geom.

ggplot(data = mpg,mapping = aes(x = displ, y = hwy)) +
  geom_point(mapping = aes(color = class)) +
  geom_smooth(data = filter(mpg,class == "subcompact"),se = FALSE)

Otros graficos muy usados y comunes son los barcharts, que se representan con geom_bar.

Sobre el funcionamiento de este tipo de graficos es de esta manera; dividen los datos y posteriormente visualizan las agrupaciones de datos que hemos dividido anteriormente,lo que se tiene en cuenta son, por tanto, los puntos que caen en cada seccion bineada.

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = cut))

En el siguiente grafico podemos encontrar un nuevo argumento denominado fill.

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity))

En este caso, mostramos la claridad del dimante segun su tipo de corte. A destacar que en este caso al definir el argumento fill = clarity nuestras barras se quedan fijas de manera automatica. Si quisieramos barras dinámicas tendríamos que utilizar el argumento position = “dodge”,position = “fill” y position = “identity”, entre otros.

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")