En esta publicación desarrollaré los ejercicios del capítulo 2 del libro ggplot2: Elegant Graphics for Data Analysis de Wickham, Navarro y Pedersen. Es un texto electrónico y puede ser consultado aquí.
#Capítulo 2
Antes que nada debemos cargar la biblioteca ggplot2.
library(ggplot2)
library(tidyverse)
str(), dim(), head(), names(), summary()data()ctycomo en hwy. De esta manera, como un primer paso, podemos convertir todo a kilómetros por litro:fact1 <- 1.60934/3.7854
fact1
## [1] 0.425144
cty_step1 <- mpg$cty*fact1
hwy_step1 <- mpg$hwy*fact1
head(cty_step1)
## [1] 7.652592 8.928023 8.502879 8.928023 6.802304 7.652592
head(mpg$cty)
## [1] 18 21 20 21 16 18
Cada valor de cty fue multiplicado por 0.425144. De esta manera obtenemos el cambio de unidades pero no en el orden del cociente ni en las unidades de distancia que se tienen como objetivo. El segundo paso es cambiar el orden de la fracción y multiplicar por 100 para obtener la solución al problema:
cty_step2 <- 100/cty_step1
hwy_step2 <- 100/hwy_step1
head(cty_step2)
## [1] 13.06747 11.20069 11.76072 11.20069 14.70090 13.06747
De esta manera podemos ver el contraste de las medidas de consumo de combustible en el sistema de medida norteamericano y el europeo:
conv<-data.frame(mpg$cty, cty_step2)
head(conv)
## mpg.cty cty_step2
## 1 18 13.06747
## 2 21 11.20069
## 3 20 11.76072
## 4 21 11.20069
## 5 16 14.70090
## 6 18 13.06747
ggplot(conv, aes(mpg.cty,cty_step2))+
geom_point()+
labs(title = "Consumo en la ciudad", x="Norteamericano: Millas por galón", y="Europeo: litros por cada 100km")
nuevos_datos <- mpg %>%
group_by(manufacturer, model) %>%
summarise(n()) %>%
group_by(manufacturer) %>%
summarise(n())
nuevos_datos
## # A tibble: 15 x 2
## manufacturer `n()`
## <chr> <int>
## 1 audi 3
## 2 chevrolet 4
## 3 dodge 4
## 4 ford 4
## 5 honda 1
## 6 hyundai 2
## 7 jeep 1
## 8 land rover 1
## 9 lincoln 1
## 10 mercury 1
## 11 nissan 3
## 12 pontiac 1
## 13 subaru 2
## 14 toyota 6
## 15 volkswagen 4
nuevos_datos[nuevos_datos[,2]==max(nuevos_datos[,2]),]
## # A tibble: 1 x 2
## manufacturer `n()`
## <chr> <int>
## 1 toyota 6
Toyota, con 6 es el que más modelos tiene.
mas_variac <- mpg %>%
group_by(manufacturer, model) %>%
summarise(n())
mas_variac[mas_variac[,3]==max(mas_variac[,3]),]
## # A tibble: 1 x 3
## # Groups: manufacturer [1]
## manufacturer model `n()`
## <chr> <chr> <int>
## 1 dodge caravan 2wd 11
Dodge Caravan 2wd es el modelo con mayor cantidad de variaciones: 11.
mpg$mod_single1 <- str_replace_all(mpg$model, " 4wd", "")
mpg$mod_single2 <- str_replace_all(mpg$mod_single1, " 2wd", "")
sin_wd <- mpg %>%
group_by(manufacturer, mod_single2) %>%
summarise(n())
sin_wd[sin_wd[,3]==max(sin_wd[,3]),]
## # A tibble: 1 x 3
## # Groups: manufacturer [1]
## manufacturer mod_single2 `n()`
## <chr> <chr> <int>
## 1 dodge caravan 11
No hubo cambios al remover la especificación redundante.
cyl and hwy? Do you have any concerns about drawing conclusions from that plot?ggplot(mpg, aes(cty, hwy))+
geom_point()
La única preocupación que tendría sería la de sobreposición de puntos que tengan la misma información. Dos autos que tengan las mismas características en estas variables van a ser necesariamente el mismo punto, generando pérdida de información.
ggplot(mpg, aes(model, manufacturer)) + geom_point()
El gráfico es útil en la medida que identifica los modelos de cada fabricante, sin embargo el eje x presenta demasiada aglomeración las categorías. Para hacer más informativos estos datos podríamos generar una tabla de contingencia.
3.1.
ggplot(mpg, aes(cty, hwy)) + geom_point()
Muestra una alta correlación entre las variables
ctyy hwy. Diagrama de puntos o sacatterplot.
3.2.
ggplot(diamonds, aes(carat, price)) + geom_point()
Same as last one, parece que existe una relación, a lo mejor no lineal, pero con muchos más puntos que el dataset anterior. A mayor
carat mayor price, con excepciones.
3.3.
ggplot(economics, aes(date, unemploy)) + geom_line()
Un gráfico de línea que pone la fecha en el eje horizontal. No es posible saber la cantidad de datos, habría que examinar más detalladamente el dataset economics.
3.4.
ggplot(mpg, aes(cty)) + geom_histogram()
Sólo necesita una variable cuantitativa para graficar un histograma de frecuencias. No se especifica el número de categorías.
4.1. El estético shapeno puede ser usado con variables continuas o numéricas. La sintaxis
ggplot(mpg, aes(displ, hwy, shape=cty))+geom_point()
arroja un error.
ggplot(mpg, aes(displ, hwy, colour=cty))+geom_point()
ggplot(mpg, aes(displ, hwy, size=cty))+geom_point()
Al usar más de un estético en un gráfico:
ggplot(mpg, aes(displ, hwy, colour=cty, size=year, shape=manufacturer))+geom_point()
Los estéticos, si están bien definidos, interactúan. Se muestra un
Warning debido a que sólo existen 6 opciones disponibles para el estético shape, pero la variable que utilizamos tiene más de 6 categorías: manufacturer siendo tipo character tiene 15 categorías. Esto también da respuesta a lo que se pregunta en el punto 4.2.
4.2. Ya resuelto.
4.3. Relación entre “drive train” y consumo:
ggplot(mpg, aes(drv, hwy))+geom_boxplot()
ggplot(mpg, aes(drv, cty))+geom_boxplot()
Tienen más rendimiento los vehículos con “drive train” frontal, le siguen los tipo
4wdy finalmente los de tracción trasera. Las diferencias entre 4wd y tracción trasera se notan más en el consumo de ciudad (cty) que en carretera (hwy).
Y ahora relación entre “drive train”, tamaño del motor y clase de vehículo:
ggplot(mpg, aes(drv, displ, colour=class))+geom_point()
El gráfico sugiere que los motores más grandes se presentan tracción trasera, los que también tienen los vehículos de 2 asientos y subcompactos, es decir, vehículos pequeños pero potentes y de alto consumo. Los vehículos
4wd tienen representación en todo el espectro de tamaños de motores; es donde se encuentran los suv, pickup y algunos de tamaño medio y algunos compactos. La tracción delantera contiene vehículos de tamaño medio, la única minivan del grupo, los subcompacty la mayoría de compactos.