library(ggplot2)
library(tidyverse)
Vamos a utilizar el dataset mpg. Es en un conjunto de datos con información relativa a sus datos técnicos.
mpg
## # A tibble: 234 x 11
## manufac… model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 audi a4 1.80 1999 4 auto(… f 18 29 p comp…
## 2 audi a4 1.80 1999 4 manua… f 21 29 p comp…
## 3 audi a4 2.00 2008 4 manua… f 20 31 p comp…
## 4 audi a4 2.00 2008 4 auto(… f 21 30 p comp…
## 5 audi a4 2.80 1999 6 auto(… f 16 26 p comp…
## 6 audi a4 2.80 1999 6 manua… f 18 26 p comp…
## 7 audi a4 3.10 2008 6 auto(… f 18 27 p comp…
## 8 audi a4 qua… 1.80 1999 4 manua… 4 18 26 p comp…
## 9 audi a4 qua… 1.80 1999 4 auto(… 4 16 25 p comp…
## 10 audi a4 qua… 2.00 2008 4 manua… 4 20 28 p comp…
## # ... with 224 more rows
Vamos a representar algunos datos gráficamente como puntos.
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy))
Vemos una relación en la que a más cilindrada, la eficiencia energética disminuye. Hay algunos puntos que se escapan de la tendencia, por lo que sobre este gráfico vamos a obtener el tipo de coches. Puede ser que haya solapamiento, por lo que necesitamos añadir el parámetro position=“jitter”, lo que añade una variacion aleatoria para que no se solapen.
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy, color=class), position = "jitter")
También podemos hacer una discriminación por tamaño.
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy, color=class, size=year))
Por último, podemos hacer una discriminación por forma o por transparencia.
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy, alpha=class))
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy, shape=class))
## Warning: The shape palette can deal with a maximum of 6 discrete values
## because more than 6 becomes difficult to discriminate; you have 7.
## Consider specifying shapes manually if you must have them.
## Warning: Removed 62 rows containing missing values (geom_point).
Otro gráfico interesante y fácil de realizar es el boxplot.
ggplot(data=mpg, mapping = aes(x=class, y=hwy))+
geom_boxplot()
También podemos hacer de una manera sencilla una agrupación de puntos en gráficos diferentes. Para ello:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy, color=class))+
facet_wrap(~ class, nrow=2)
También podemos obtener los gráficos agrupados por varias variables:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy, color=class))+
facet_grid(drv~cyl)
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy))
## `geom_smooth()` using method = 'loess'
ggplot(data=mpg)+
geom_point(mapping =aes(x=displ,y=hwy, color=class)) +
geom_smooth(mapping=aes(x=displ,y=hwy))
## `geom_smooth()` using method = 'loess'
ggplot(data=mpg, mapping =aes(x=displ,y=hwy))+
geom_point(mapping =aes(color=class)) +
geom_smooth(se=FALSE)
## `geom_smooth()` using method = 'loess'
ggplot(data=mpg, mapping =aes(x=displ,y=hwy))+
geom_point(mapping =aes(color=class)) +
geom_smooth(data=filter(mpg, class=="subcompact"), se=FALSE)
## `geom_smooth()` using method = 'loess'
Vamos a trabajar ahora con el dataset diamond.
head(diamonds, 3)
## # A tibble: 3 x 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.230 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
## 2 0.210 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
## 3 0.230 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
Vamos a hacer un conteo de los distintos cortes para diamante.
ggplot(data=diamonds)+
geom_bar(mapping=aes(x=cut))
En lugar de la suma puede que necesitemos saber las proporciones.
ggplot(data=diamonds)+
geom_bar(mapping=aes(x=cut, y=..prop.., group=1))