ggplot2 es una de las herramientas de tydiverse que se utiliza para la creación de gráficos de alta calidad para publicación. El lenguaje de ggplot2 está basado en The Grammar of Graphics. ggplot2 incluye varias funciones para seleccionar las variables a graficar y el tipo de gráfica a realizar.
#install.packages(c("ggplot2", "dplyr", "Lock5Data"))
library(ggplot2) # Crear gráficos de alta calidad
library(dplyr) # Manipulación de datos##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##Gráficos de cajas y bigotes
Vamos a leer y explorar los datos del dataframe Young Blood que viene con Lock5Data. Este dataframe proviene de un estudio en donde se realizó una transfusión de plasma de ratones jovenes a ratones ancianos, para evaluar si es posible revertir el envejecimiento cerebral.
Los datos provienen de las siguientes referencias sciencenews.org y Science.
## [1] "tbl_df" "tbl" "data.frame"
## tibble [30 x 2] (S3: tbl_df/tbl/data.frame)
## $ Plasma : chr [1:30] "Old" "Old" "Old" "Old" ...
## $ Runtime: int [1:30] 19 21 22 25 28 29 29 31 36 42 ...
## - attr(*, "spec")=List of 2
## ..$ cols :List of 2
## .. ..$ Plasma : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ Runtime: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_integer" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
## ..- attr(*, "class")= chr "col_spec"
## [1] 30 2
## [1] "Plasma" "Runtime"
## # A tibble: 6 x 2
## Plasma Runtime
## <chr> <int>
## 1 Old 19
## 2 Old 21
## 3 Old 22
## 4 Old 25
## 5 Old 28
## 6 Old 29
## [1] Old Old Old Old Old Old Old Old Old Old Old Old
## [13] Old Young Young Young Young Young Young Young Young Young Young Young
## [25] Young Young Young Young Young Young
## Levels: Old Young
## [1] 19 21 22 25 28 29 29 31 36 42 50 51 68 27 28 31 35 39 40 45 46 55 56 59 68
## [26] 76 90 90 90 90
Ahora vamos a crear el mismo gráfico con ggplot2. La estructura de ggplot2 es la siguiente:
ggplot(data= , mapping= aes(x= , y= )) + geom()
En data vamos a ingresar el objeto en el cual se encuentra guardado el dataframe y en aes vamos a ingresar las varibles a graficar y les vamos a asignar un eje, además de características como color, tamaño y forma.
En geom() vamos a indicar el tipo de gráfico, por ejemplo:
Si quieres explorar más acerca de los tipos de gráficos de ggplot puedes consultar el siguiente enlace
Ahora construiremos el gráfico de cajas y bigotes con las variables Runtime y Plasma
Si lo queremos graficar en posición horizontal invertimos la posición de los ejes.
Si queremos graficar con muescas utilizamos notch = T.
## notch went outside hinges. Try setting notch=FALSE.
Si queremos asignar colores podemos utilizar una paleta de colores o utilizar un código de colores HEX.
También podemos asignar forma y color a los outliers.
ggplot(data=YoungBlood, aes(x=Plasma, y=Runtime)) +
geom_boxplot(fill="brown4", colour= "#000000", outlier.colour = "red", outlier.shape = 1)Podemos colocar los valores de los datos de forma dispersa sobre el gráfico.
ggplot(data=YoungBlood, aes(x=Plasma, y=Runtime)) +
geom_boxplot(fill="brown4", colour= "#000000", outlier.colour = "red", outlier.shape = 1) +
geom_jitter(width = 0.2)Podemos cambiar de un gráfico de cajas y bigotes a un gráfico de violin
ggplot(data=YoungBlood, aes(x=Plasma, y=Runtime)) +
geom_violin(fill="brown4", colour= "#000000", outlier.colour = "red",
outlier.shape = 1) +
geom_jitter(width = 0.2)## Warning: Ignoring unknown parameters: outlier.colour, outlier.shape
Ahora vamos a explorar la base de datos iris, que contiene datos de mediciones florales de especies del género Iris (Iridiace).
## [1] "data.frame"
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
## [1] 150 5
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
Ahora vamos a crear algunas columnas adicionales y posteriormente realizaremo algunos graficos.
iris<-iris %>%
mutate(Slen=Sepal.Length*Sepal.Width, Plen=Petal.Length*Petal.Width) %>%
mutate(
Slen.m= case_when(
Slen <15 ~ "Pequeño",
Slen >=15 & Slen <=20 ~ "Mediano",
Slen >20 ~ "Grande",
TRUE ~ "otro"
)
)
names(iris)## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
## [6] "Slen" "Plen" "Slen.m"
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species Slen Plen Slen.m
## 1 5.1 3.5 1.4 0.2 setosa 17.85 0.28 Mediano
## 2 4.9 3.0 1.4 0.2 setosa 14.70 0.28 Pequeño
## 3 4.7 3.2 1.3 0.2 setosa 15.04 0.26 Mediano
## 4 4.6 3.1 1.5 0.2 setosa 14.26 0.30 Pequeño
## 5 5.0 3.6 1.4 0.2 setosa 18.00 0.28 Mediano
## 6 5.4 3.9 1.7 0.4 setosa 21.06 0.68 Grande
ggplot(iris, aes(Species, y=Sepal.Length)) +
geom_boxplot(aes(colour=Slen.m),outlier.colour = "red",
outlier.shape = 1)ggplot(iris, aes(Slen.m, y=Sepal.Length)) +
geom_boxplot(aes(colour=Species),outlier.colour = "red",
outlier.shape = 1)+
xlab("Tamaño de los sépalos") + ylab("Longitud de los sépalos (mm)")ggplot(iris, aes(Slen.m, y=Sepal.Length)) +
geom_violin(aes(colour=Species))+
xlab("Tamaño de los sépalos") + ylab("Longitud de los sépalos (mm)")Vamos a revisar cómo se correlaciona la longitud de los sépalos vs la longitud de los pétalos.
Separemos las especies por color
ggplot(data = iris, mapping = aes(x = Sepal.Length, y = Petal.Length)) +
geom_point(aes(colour=Species) )Cambiemos la forma de los marcadores
ggplot(data = iris, mapping = aes(x = Sepal.Length, y = Petal.Length)) +
geom_point(aes(colour=Species), shape=2 )Ahora exploremos la base de datos de Breakfast Cereals
## [1] 30 10
## Name Company Serving Calories Fat Sodium Carbs Fiber Sugars
## 1 AppleJacks K 1.00 117 0.6 143 27 0.5 15.0
## 2 Boo Berry G 1.00 118 0.8 211 27 0.1 14.0
## 3 Cap'n Crunch Q 0.75 144 2.1 269 31 1.1 16.0
## 4 Cinnamon Toast Crunch G 0.75 169 4.4 408 32 1.7 13.3
## 5 Cocoa Blasts Q 1.00 130 1.2 135 29 0.8 16.0
## 6 Cocoa Puffs G 1.00 117 1.0 171 26 0.8 14.0
## Protein
## 1 1.0
## 2 1.0
## 3 1.3
## 4 2.7
## 5 1.0
## 6 1.0
Cambiar la posición
Agregar una línea de regresión
ggplot(Cereal, aes(Calories, Sugars)) +
geom_point() +
facet_grid(.~ Company)+
geom_smooth(method=lm)## `geom_smooth()` using formula 'y ~ x'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Es posible cambiar en el eje “y” de conteo a densidad.
Con geom_bar podemos realizar conteos de variables categóricas y expresarlos en gráficos de barras.
Si utilizamos geom_line podemos agregar una linea de tendencia, con el comando alpha podemos darle transparencia a los gráficos. Con el comando breaks podemos indicar el inicio y final del eje x y además indicar el grosor de los bins
ggplot(Cereal, aes(Sugars)) +
geom_histogram(aes(y= ..density..), fill = "brown4", alpha = 0.5,
breaks=seq(0,22.5,2.5))+
geom_line(aes(y = ..density..), colour=1, stat = 'density',
size = 2, alpha = .6)Para la presente tarea se utilizaran bases de datos reales a las que tengan acceso los maestrandos, puede ser la base de datos de su tesis de licenciatura.
3.1 Proyectos: cree una carpeta dentro de su computadora y dentro de esta carpeta cree subcarpetas para ordenar su ambiente de trabajo.
3.2 La base de datos a utilizar deberá estar en formato de texto separado por comas CSV. Realice lo siguiente:
3.2.1 Cargue la base de datos al ambiente de trabajo. 3.2.2 Explore los datos utilizando los comandos str, names, head, View, type.of, class. 3.2.3 Indique que tipos de datos tiene en cada columna: caracter, enteros, números. 3.2.4 Ponga en práctica los conocimientos adquiridos con dplyr, utilizando los comandos filter, mutate, select, summarize, group_by, etc. y guarde los subsets en nuevos objetos. 3.2.5 Elabore gr[aficos para análisis exploratorios utilizando los comandos de ggplot, procuré ser muy creativo para obtener gráficos de alta calidad.
Nota: Para cada uno de los incisos deberán de colocar los comandos utilizados y realizar una captura de pantalla de la consola o de las imágenes según sea el caso