# install.packages("tidyverse") library(tidyverse) # update.packages() #install.packages("datos") library(datos) ### Trabajaremos con estos datos millas # Base de datos a usar ?millas # documentación help(millas) #### Plot básico, quizás lo conozcan plot(millas$cilindrada, millas$autopista) ### Para gráficos de mejor calidad: ggplot2 ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista)) ### Cruzando con la variable 'clase' ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista, color = clase)) ### Hay otras opciones de visualización, hay que ir viendo cuál es la más adecuada ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista, size = clase, color = clase)) ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista, alpha = clase)) ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista, shape = clase)) ### Se pueden fijar parámetros estéticos a mano, sin que dependan de variables ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista), color = 'blue') + geom_point(mapping = aes(x = log(cilindrada), y = log(autopista)), color = 'green') ### Podemos separar los datos en varios gráficos, en vez de visualizarlos todos juntos con distintos parámetros estéticos ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista)) + facet_wrap(~clase) ### Podemos hacer lo mismo para distintas combinaciones de variables ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista, colour = clase)) + facet_grid(traccion ~ cilindros) ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista)) + facet_grid(clase ~ .) ### Exploramos como combinar distintos tipos de gráficos (geoms) ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista)) ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista), alpha = 0.3) + geom_smooth(mapping = aes(x = cilindrada, y = autopista)) ggplot(data = millas) + geom_point(mapping = aes(x = cilindrada, y = autopista, color = traccion)) + geom_smooth(mapping = aes(x = cilindrada, y = autopista, linetype = traccion)) ### Transformaciones estadísticas ?diamantes ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, y = stat(count))) # Cambiando el estadístico del gráfico de barras demo <- tribble( ~corte, ~freq, "Regular", 1610, "Bueno", 4906, "Muy Bueno", 12082, "Premium", 13791, "Ideal", 21551 ) ggplot(data = demo) + geom_bar(mapping = aes(x = corte, y = freq), stat = "identity") # Para mostrar proporciones en vez de conteo ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, y = stat(prop), group = 1)) # Especificando la información a mostrar en el gráfico ggplot(data = diamantes) + stat_summary( mapping = aes(x = corte, y = profundidad), fun.min = min, fun.max = max, fun = median ) # Para los gráficos de barras, contamos con el parámetro estético 'fill' ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, colour = corte)) ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, fill = corte)) # Esto es particularmente útil al cruzar distitnas variables ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, fill = claridad), position = 'stack') # Observar que estamos apilando distintos gráficos de barras # Hay otras opciones estéticas para el parámtero 'position' (stack por defecto) # Identitiy: ggplot(data = diamantes, mapping = aes(x = corte, fill = claridad)) + geom_bar(alpha = 1/5, position = "identity") ggplot(data = diamantes, mapping = aes(x = corte, colour = claridad)) + geom_bar(fill = NA, position = "identity") # Fill: ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, fill = claridad), position = "fill") # Dodge ggplot(data = diamantes) + geom_bar(mapping = aes(x = corte, fill = claridad), position = "dodge") # Jitter: agrega ruido aleatorio a posiciones para evitar solapamiento # En general: estructura ggplot #ggplot(data = ) + # ( # mapping = aes(), # stat = , # position = # ) + # + #