10/07/21
Abstract
La teoría mencionada puede revisarse en el capítulo 1 de mis notas de clase que aparecen en el siguiente documento: 1.1. Estadística básica. En Rpubs:: toc se pueden ver otros documentos de posible interés.
Primero, debemos instalar y descargar las librerías que vamos a utilizar.
library(dplyr)
library(ggplot2)
library(cowplot) # Para unir gráficos generados con ggplot2
library(viridis) # Para paletas de colores
library(hrbrthemes) # Temas, componentes de tema y utilidades adicionales para ggplot2
Recuerde que el data frame (básicamente una tabla) es en realidad solo un tipo específico de otra estructura de datos (la lista). Actualmente, es el formato de entrada de nuestros datos más frecuente para los análisis estadísticos (dentro de R, pero también para otros programas estadísticos y, por supuesto, para softwares de hojas de cálculo). Por esta razón, primero, es importante importar/cargar los datos antes de iniciar nuestro análisis. Esto ya se explicó en el documento Rpubs :: Importar datasets.
En los documentos Rpubs :: Examinar data frames y Rpubs :: Examinar data frames explicamos algunas funciones de R que nos permiten revisar propiedades de los data frames de las variables que contenidads en él. En Rpubs :: Recodificar variables describimos como recodificar las variables. Para más detalles relacionados con los data frames, se puede consultar el documento Rpubs :: data frames (generalidades).
Vamos a utilizar un conjunto de datos, que fueron recogidos aplicando una encuesta a una muestra de estudiantes universitarios. Es un data frame con 400 observaciones y 46 variables, las cuales se describen en este enlace (click aquí). En este documento, se importará la base de datos desde una dirección web (dos opciones):
Opción A (web, desde github): Para esta opción, se necesita cargar la librería “repmis”:
library(repmis)
source_data("https://github.com/hllinas/DatosPublicos/blob/main/Estudiantes.Rdata?raw=false")
datosCompleto <- Estudiantes
Opción B (web, desde Google Drive):
url.dat<- "http://bit.ly/Database-Estudiantes"
datosCompleto <- read.delim(url.dat)
Recuérdense las otras opciones, si tienen las bases de datos descargadas en su sesión de trabajo (ya sea en extensiones en Rdata, en excel o en otros formatos). Para más detalles, véase el documento RPubs :: Importar datasets básico. A manera de ejemplo:
Opción C (local, con archivo en Rdata):
load(file="Estudiantes.Rdata")
datosCompleto <- Estudiantes
Opción D (local, con archivo en excel):
datosCompleto <- read.delim('clipboard')
Con ggplot2 se pueden construir gráficos y su gramática está basado en un proceso de acumulación de capas o layers. Tiene un cierto nivel de complejidad, pero se obtienen resultados muy profesionales. Para una mejor aplicación de las funciones de este paquete, sugiero apoyarse en la hoja de referencia Data Visualization with ggplot2 :: Cheat Sheet o en la página de referencias ggplot2 :: Reference o en mi documento RPubs :: Diagrama de barras con ggplot2 (general).
En este documento, presentaremos ejemplos sobre la manera de construir diagrama de barras con ggplot2 para el caso de considerar dos variables categóricas. Se puede revisar el documento Bar charts para ver otros más.
Es importante resaltar que si no se escribe el nombre del data frame, en la línea de ggplot(.), el punto es obligatorio escribirlo ya que representa al data frame (véase la segunda opción, B, en el código de abajo). El símbolo %>% nos permite:
Concatenar múltiples operaciones con la librería dplyr.
Escribir una secuencia de operaciones de izquierda a derecha. Por eso, en este caso, se debe instalar y ejecutar la librería dplyr.
En el código de abajo se ilustra lo explicado anteriormente.
ggplot("nuestro_data_frame") #A) Primera opción de ecritura
"nuestro_data_frame" %>% ggplot(.) #B) Segunda opción de ecritura
En mi documento Rpubs :: Diagrama de barras univariados con ggplot2, se explica este caso con detalles. También, se puede revisar el documento Bar charts.
A manera de ejemplo, supongamos que se quiere analizar la distribución de las personas según una variable categórica 1 (variable auxiliar), dentro de cada nivel de otra variable categórica 2 (variable de referencia), teniendo en cuenta las siguientes unidades experimentales (unidad), como se indican en cada uno de los tres casos:
Caso 1. Todas las personas. Para este caso, la sintaxis básica es:
ggplot(data.frame, aes(referencia, fill=auxiliar)) +
geom_bar()
Caso 2. Todas las personas que pertenecen a un nivel dado (digamos, j) de otra variable categórica 3 (variable unidad). Por ejemplo, solo las MUJERES o solo los HOMBRES. En este caso, hay que especificar el data frame, filtrar el nivel j de variable 3 e indicar la sintáxis básica del ggplot2, así:
data.frame %>% filter(unidad == "j") %>%
ggplot(., aes(referencia, fill=auxiliar)) +
geom_bar()
Caso 3. Todas las personas mencionadas en los casos 1 y 2, pero, antes de graficar, se construye primero la tabla de frecuencias cruzadas.
En todos los casos, se pueden agregar más capas, de acuerdo a lo explicado en en mi documento RPubs :: Diagrama de barras con ggplot2 (general). A continuación, se presentarán una serie de ejemplos que ilustran estas dos situaciones.
Ejemplo 1 (Colegio versus Fuma)
Supongamos que se quiere analizar la distribución de la variable “COLEGIO” (variable auxiliar) dentro de cada nivel de la variable “FUMA” (grupo de referencia). En este caso, el diagrama de barras de interés se obtiene así:
ggplot(datosCompleto, aes(Fuma, fill=Colegio)) + #1
geom_bar()+ #2
labs(x= "Fuma", y="Frecuencias", fill="Colegio") + #3
ylim(c(0,300)) + #4
#xlim(c(0,300)) + #4
ggtitle("Diagrama de barras") + #5
#coord_flip() + #6
#theme_bw() + #7
theme_bw(base_size = 12) #7
Ejemplo 2: Descripción de las capas en el ejemplo 1 (que se agregan con el signo “+”)
Consideremos el código presentado en el ejemplo 1.
En esta capa, se especifica el data frame. En la estetica aes, se indica la variable o grupo de referencia y, con la opción fill, la variable auxiliar (la que se quiere analizar o distribuir).
Se crea el diagrama de barras con geom_bar(). Si no se escriben argumentos dentro de los paréntesis, las barras salen en position = stack. Para cambiar el ancho de las barras, el color de su borde y la posición de las barras, se utilizan las opciones width y colour y position como argumentos de geom_bar. Por ejemplo, con position=“dodge” salen una al lado de la otra.
Con labs(), se asignan los nombres de los ejes X y Y (y el de las leyendas). Con y="" (sin nada adentro de las comillas), el nombre en el eje Y no aparecerá.
Para ajustar la escala del eje Y, se utiliza ylim(). De manera análoga, se escribe xlim() cuando X sea continua.
Se utiliza ggtitle para agregar un título del diagrama.
Para rotar horizontalmente el diagrama, se agrega la capa coord_flip().
Para cambiar el fondo del diagrama, se agrega la capa theme_bw(). En este caso, el fondo del diagrama será a blanco y negro. Para cambiar el tamaño de las fuentes del diagrama (por ejemplo, a 12 puntos), se escribe la opción base_size=12 en theme_bw().
Ejemplo 3 (Otra forma de construir el mismo diagrama)
Observe el código de abajo (las opciones numeradas se explican en el ejemplo 4). Compare el del ejemplo 1.
ggplot(datosCompleto, aes(Fuma, fill=Colegio)) +
geom_bar(position="dodge",colour="black") +
labs(x= "Fuma", y="Frecuencias", fill="Colegio") +
ylim(c(0,200)) +
#xlim(c(0,300)) +
ggtitle("Diagrama de barras") +
#theme_bw() +
theme_bw(base_size = 12) +
#coord_flip() +
#guides(fill=FALSE)+ #8
scale_fill_manual(values = c("orange","green")) + #9
geom_text(aes(label=..count..), stat='count', #10
position=position_dodge(0.9),
vjust=-0.5,
size=5.0
)+
facet_wrap(~"Distribución de colegio por fumadores y no fumadores") #11
Ejemplo 4 (descripción de las capas en el ejemplo 3)
Consideremos el código presentado en el ejemplo 3.
Para hacer invisible las leyendas, se utiliza la opción fill=FALSE.
Cambiar los colores de las barras.
Para agregar sobre las barras las etiquetas de las frecuencias, se agrega la capa geom_text(). Las frecuencias de cada barra se etiquetan mediante el uso de aes(label=..count..) para stat=“count”. Con position=position_dodge y vjust se ajustan las posiciones horizontal y vertical de estas etiquetas. La opción size es el tamaño de la fuente de estas etiquetas.
Para ajustar las facetas de forma rectangular se agrega la capa facet_wrap. La opción ggtitle() se puede quitar si así lo desea. En este caso, si reemplaza facet_wrap por facet_grid, obtenemos el mismo diagrama.
Ejemplo 5 (dentro de mujeres: Estatura versus Fuma)
Supongamos que, dentro del grupo de las MUJERES, se quiere analizar la distribución de “ESTATURA” dentro de “FUMA”. Para ello, se puede construir el diagrama de barras correspondiente de la siguiente manera (el código No.12 se usa para filtrar la base de datos al grupo de las mujeres):
datosCompleto %>% filter(Sexo=="Femenino") %>% #12
ggplot(., aes(Fuma, fill=Estatura)) +
geom_bar(position="dodge",colour="black") +
labs(x= "Fuma", y="Frecuencias", fill="Estatura") +
ylim(c(0,100)) +
#xlim(c(0,300)) +
ggtitle("Diagrama de barras en el grupo de las mujeres") +
#theme_bw() +
theme_bw(base_size = 14) +
#coord_flip() +
#guides(fill=FALSE)+
#scale_fill_manual(values = c("red","blue", "orange")) +
geom_text(aes(label=..count..),stat='count',
position=position_dodge(0.9),
vjust=-0.5,
size=5.0) +
facet_wrap(~"Distribución de estatura por fumadores y no fumadores")
Ejemplo 6 (dentro de hombres: Estatura versus Fuma)
Supongamos que, dentro del grupo de los HOMBRES, se quiere analizar la distribución de “ESTATURA” dentro de “FUMA”. Para ello, se puede construir el diagrama de barras correspondiente de la siguiente manera (el código No.13 se usa para filtrar la base de datos al grupo de los hombres):
datosCompleto %>% filter(Sexo=="Masculino") %>% #13
ggplot(., aes(Fuma, fill=Estatura)) +
geom_bar(position="dodge",colour="black") +
labs(x= "Fuma", y="Frecuencias", fill="Estatura") +
ylim(c(0,100))+
#xlim(c(0,300)) +
ggtitle("Diagrama de barras en el grupo de los hombres") +
#theme_bw() +
theme_bw(base_size = 14) +
#coord_flip() +
#guides(fill=FALSE) +
scale_fill_manual(values = c("red","blue", "green"))+
geom_text(aes(label=..count..),stat='count',
position=position_dodge(0.9),
vjust=-0.5,
size=5.0) +
facet_wrap(~"Distribución de estatura por fumadores y no fumadores")
Ejemplo 7 (construyendo, primero, una tabla cruzada)
Otra forma de generar diagramas de barras es construir primero la tabla de frecuencias correspondiente. Véase el código de abajo. Primero, se agrupa por Fuma y Sexo (No. 14). Luego, calculan los totales y porcentajes de interés (No.15 y 16). Finalmente, cualquiera variable de interés, se puede ordenar en forma ascendente con la opción arrange(variable) o en forma descendente con arrange(desc(variable)) (No.17).
Tabla <- datosCompleto %>%
dplyr::group_by(Fuma, Sexo) %>% #14
dplyr::summarise(Total = n()) %>% #15
dplyr::mutate(Porcentaje = round(Total/sum(Total)*100, 1)) %>% #16
dplyr::arrange(Fuma) #17
#dplyr::arrange(desc(Fuma)) #17
#dplyr::arrange(Sexo) #17
#dplyr::arrange(desc(Sexo)) #17
Con ayuda de la tabla anterior, procedemos a construir el diagrama:
ggplot(Tabla, aes(x = Fuma, y=Total, fill=Sexo) ) +
geom_bar(width = 0.9,stat="identity", #18
position = position_dodge() #19
) +
ylim(c(0,150))+
#xlim(c(0,300)) +
#ggtitle("Un título") +
labs(x="Fuma", y= "Frecuencias \n (Porcentajes)") + #20
labs(fill = "Sexo") + #21
scale_fill_manual(values = c("pink", "skyblue")) + #22
geom_text(aes(label=paste0(Total," ", "", "(", Porcentaje, "%", ")")), #23
vjust=-0.9,
color="black",
hjust=0.5,
# define text position and size
position = position_dodge(0.9),
angle=0,
size=4.0
)+
scale_fill_discrete(name = "Género", labels = c("Mujer", "Hombre")) + #24
theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1)) + #25
theme_bw(base_size = 14) +
#coord_flip() + #26
facet_wrap(~"Sexo versus Fuma")
Ejemplo 8 (descripción de las capas en el ejemplo 7)
Consideremos el código presentado en el ejemplo 7.
Las alturas de las barras representan comúnmente una de dos cosas: un recuento de casos en cada grupo o los valores en una columna del marco de datos. Por defecto, geom_bar usa stat = “bin”. Esto hace que la altura de cada barra sea igual al número de casos de cada grupo. Si desea que las alturas de las barras representen valores en los datos, usamos stat = “identity”. En este sentido, estamos asignando un valor a la estética Y.
De forma predeterminada, varias X que se produzcan en el mismo lugar se apilarán una encima de la otra por position_stack. Si desea que se ubiquen una al lado de la otra, se utiliza position_dodge. Finalmente, position_fill muestra las proporciones relativas en cada X al apilar las barras y, luego, estirarlas o aplastarlas a la misma altura.
Títulos de los ejes X y Y. Observe que se ha utilizado “” para quebrar la línea de uno de los títulos.
Para modificar el título de las leyendas.
Para editar los título de las leyendas y de los niveles de la variable.
En geom_text() se han agregado las frecuencias y los porcentajes. Para ello, se ha utilizado la función paste0(), colocando los argumentos que quiero pegar, separados de coma. Con angle se le puede dar rotación al texto.
Para editar los título de las leyendas y de los niveles de la variable. Si se escoge esta capa, inmediatamente se anula el argumento que se anote en la opción explicada en el punto 21.
Para rotar y ajustar etiquetas en el eje X.
Para rotar horizontalmente el diagrama, se agrega la capa coord_flip().
Ejemplo 9 (con tabla cruzada y coord_flip)
Compare el código de abajo y el diagrama resultante aquéllos del ejemplo7 (las descripciones de las capas se dejan al lector).
ggplot(Tabla, aes(x = Fuma, y=Total, fill=Sexo) ) +
geom_bar(width = 0.9,stat="identity",
position = position_dodge()
) +
ylim(c(0,200))+
#xlim(c(0,300)) +
#ggtitle("Un título") +
labs(x="Fuma", y= "Frecuencias \n (Porcentajes)") +
labs(fill = "Sexo") +
scale_fill_manual(values = c("pink", "skyblue")) +
geom_text(aes(label=paste0(Total," ", "", "(", Porcentaje, "%", ")")), #27
#vjust=-0.9, #28
color="black", #29
hjust=-0.15, #30
# define text position and size #31
position = position_dodge(0.9), #32
angle=90, #33
size=4.0 #34
)+
scale_fill_discrete(name = "Género", labels = c("Female", "Male")) + #35
theme(axis.text.x = element_text(angle = 45, #36
vjust = 1, #37
hjust=1, #38
size=14) #39
) +
#theme_bw(base_size = 14) +
#coord_flip() +
facet_wrap(~"Sexo versus Fuma")
Ejemplo 10: position_stack(reverse = FALSE)
Considere el código de abajo y el diagrama resultante (las descripciones de las capas se dejan al lector). Compare con el ejemplo 5.
datosCompleto %>% filter(Sexo=="Femenino") %>%
ggplot(., aes(Fuma)) +
geom_bar(aes(fill = Estatura), #40
#position = position_stack(reverse = TRUE), #41
colour="brown" #42
) +
labs(x= "Fuma", y="Frecuencias", fill="Estatura") +
ylim(c(0,200))+
#xlim(c(0,300)) +
ggtitle("Diagrama de barras en el grupo de los hombres") +
#theme_bw() +
theme_bw(base_size = 14) +
theme(legend.position = "top") + #43
coord_flip() + #44
#guides(fill=FALSE) +
scale_fill_manual(values = c("red","blue", "green"))+
geom_text(aes(label=..count..),stat='count',
position=position_dodge(0.9),
hjust=-0.6,
size=5.0) +
facet_wrap(~"Distribución de estatura por fumadores y no fumadores")
Ejemplo 11: position_stack(reverse = TRUE)
Considere el código de abajo y el diagrama resultante (las descripciones de las capas se dejan al lector). Compare con el ejemplo 10.
datosCompleto %>% filter(Sexo=="Femenino") %>%
ggplot(., aes(Fuma)) +
geom_bar(aes(fill = Estatura), #44
position = position_stack(reverse = TRUE), #45
colour="brown" #46
) +
labs(x= "Fuma", y="Frecuencias", fill="Estatura") +
ylim(c(0,200))+
#xlim(c(0,300)) +
ggtitle("Diagrama de barras en el grupo de los hombres") +
#theme_bw() +
theme_bw(base_size = 14) +
theme(legend.position = "top") + #47
coord_flip() + #48
#guides(fill=FALSE) +
scale_fill_manual(values = c("red","blue", "green"))+
geom_text(aes(label=..count..),stat='count',
position=position_dodge(0.9),
hjust=-0.6,
size=5.0) +
facet_wrap(~"Distribución de estatura por fumadores y no fumadores")
Ejemplo 12 (position=stack, ejes, viridiris, hrbrthemes)
En este ejemplo vamos a construir un diagrama de barras en estacas (stack), a cambiar la paleta de colores y los temas. Las funciones de ggplot2 también se pueden usar para escalas discretas con la función scale_fill_viridis dekl paquete viridiris y contiene, entre otros, el argumento discrete = TRUE, con la opción option= c(A, B, C, D, E, …). Temas, componentes de tema y utilidades adicionales para ggplot2 se pueden encontrar con el paquete hrbrthemes.
# Librerías
library(viridis) # Para paletas de colores
library(hrbrthemes) # Temas, componentes de tema y utilidades adicionales para ggplot2
#Creando la semilla
set.seed(0)
# Crear conjunto de datos
Opinion <- c(rep("Nada" , 3) , rep("Poco" , 3) , rep("Bastante" , 3) , rep("Mucho" , 3) )
Salario <- rep(c("Bajo" , "Medio" , "Alto") , 4)
Puntaje <- sample(seq(1,100), 12 )
datos <- data.frame(Opinion,Salario,Puntaje)
# Gráfica
ggplot(datos, aes(fill=Salario, y=Puntaje, x=Opinion)) +
geom_bar(position="stack", stat="identity") +
scale_fill_viridis(discrete = T, option = "A") +
theme_ipsum() +
xlab("") +
ylim(c(0,110))
Ejemplo 13 (position=fill, ejes viridiris, hrbrthemes)
En este ejemplo vamos a construir un diagrama de barras en estacas, pero con porcentajes (fill), a usar un tema, a cambiar la paleta de colores y a personalizar los títulos de los ejes.
# Librerías
library(viridis) # Para paletas de colores
library(hrbrthemes) # Temas, componentes de tema y utilidades adicionales para ggplot2
#Creando la semilla
set.seed(0)
# Crear conjunto de datos
Opinion <- c(rep("Nada" , 3) , rep("Poco" , 3) , rep("Bastante" , 3) , rep("Mucho" , 3) )
Salario <- rep(c("Bajo" , "Medio" , "Alto") , 4)
Puntaje <- sample(seq(1,100), 12 )
datos <- data.frame(Opinion,Salario,Puntaje)
# Gráfica
ggplot(datos, aes(fill=Salario, y=Puntaje, x=Opinion)) +
geom_bar(position="fill", stat="identity") +
scale_fill_viridis(discrete = T, option = "D") +
theme_ipsum_es() +
xlab("")
Ejemplo 14 (título, ejes, viridiris, hrbrthemes)
En este ejemplo, se va añadir un título, a usar un tema, a cambiar la paleta de colores y a personalizar los títulos de los ejes.
# Librerías
library(viridis) # Para paletas de colores
library(hrbrthemes) # Temas, componentes de tema y utilidades adicionales para ggplot2
#Creando la semilla
set.seed(0)
# Crear conjunto de datos
Opinion <- c(rep("Nada" , 3) , rep("Poco" , 3) , rep("Bastante" , 3) , rep("Mucho" , 3) )
Salario <- rep(c("Bajo" , "Medio" , "Alto") , 4)
Puntaje <- sample(seq(1,100), 12 )
datos <- data.frame(Opinion,Salario,Puntaje)
# Gráfica
ggplot(datos, aes(fill=Salario, y=Puntaje, x=Opinion)) +
geom_bar(position="dodge", stat="identity") +
scale_fill_viridis(discrete = T, option = "E") +
ggtitle("Diagramas de barras") +
theme_ipsum_rc() +
xlab("")+
ylim(c(0,120))
Ejemplo 15 (facet_wrap, viridiris, hrbrthemes)
En este ejemplo utilizamos la función facet_wrap como una alternativa de apilamiento o agrupación.
# Librerías
library(viridis) # Para paletas de colores
library(hrbrthemes) # Temas, componentes de tema y utilidades adicionales para ggplot2
#Creando la semilla
set.seed(0)
# Crear conjunto de datos
Opinion <- c(rep("Nada" , 3) , rep("Poco" , 3) , rep("Bastante" , 3) , rep("Mucho" , 3) )
Salario <- rep(c("Bajo" , "Medio" , "Alto") , 4)
Puntaje <- sample(seq(1,100), 12 )
datos <- data.frame(Opinion,Salario,Puntaje)
# Gráfica
ggplot(datos, aes(fill=Salario, y=Puntaje, x=Salario)) +
geom_bar(position="dodge", stat="identity") +
scale_fill_viridis(discrete = T, option = "B") +
ggtitle("Diagramas de barras") +
facet_wrap(~Opinion) +
theme_ipsum_tw() +
theme(legend.position="none") +
xlab("")
plot_grid es una función de la librería cowplot. Permite arreglar varias gráficas en una cuadrícula.
El número de filas y columnas en la cuadrícula de la gráfica se puede especificar a través de nrow y ncol.
Con labels=c(…) se especifican las etiquetas para cada gráfica.
Si se especifican las etiquetas con labels=“AUTO” o labels=“auto”, las etiquetas se generarán automáticamente en mayúsculas o minúsculas, respectivamente.
El tamaño de las etiquetas se puede ajustar a través de la opción label_size. El valor predeterminado es 14, por lo que los valores más grandes harán que las etiquetas sean más grandes y los valores más pequeños las harán más pequeñas.
Algunas veces, los gráficos no están alineados. En muchos casos se pueden alinear mediante la opción align.
Otras opciones de plot_grid son, entre otras, las siguientes:
Ajustar la familia de fuentes, la fuente y el color de las etiquetas (con label_fontfamily, label_fontface y label_colour, respectivamente).
Mover las etiquetas (con label_x and label_y).
Justificar las etiquetas (con hjust y vjust, respectivamente).
Usar el argumento NULL para indicar un gráfico faltante en la cuadrícula. Debe tenerse en cuenta que los gráficos faltantes se etiquetarán si se activa el etiquetado automático.
Ajustar los anchos y las alturas de filas y columnas (con rel_widths y rel_heights, respectivamente).
Crear cuadrículas de gráficas anidadas.
La presentación de la unión de las gráficas depende del arreglo rectangular de las gráficas que queramos unir. Para más detalles y ejemplos, puede consultarse el documento Arranging plots in a grid.
Ejemplo 16 (arreglo de 1x2)
Barra1 <- ggplot(datosCompleto, aes(Fuma, fill=Colegio)) +
geom_bar()+
labs(x= "Fuma", y="Frecuencias", fill="Colegio") +
ylim(c(0,300)) +
theme_bw(base_size = 12)
Barra2 <- ggplot(datosCompleto, aes(Fuma, fill=Sexo)) +
geom_bar()+
labs(x= "Fuma", y="Frecuencias", fill="Sexo") +
ylim(c(0,300)) +
theme_bw(base_size = 12)
g1<-plot_grid(Barra1, Barra2, nrow = 1, ncol=2); g1
Ejemplo 17 (arreglo de 2x2)
Barra3 <- ggplot(datosCompleto, aes(Colegio, fill=Sexo)) +
geom_bar()+
labs(x= "Colegio", y="Frecuencias", fill="Sexo") +
ylim(c(0,300)) +
theme_bw(base_size = 12)
plot_grid(Barra1, Barra2, Barra3, nrow = 2, ncol=2)
Ejemplo 18 (arreglo de 2x1)
plot_grid(g1, Barra3, nrow = 2, ncol=1)
Hay otras maneras que nos permiten unir gráficas en ggplot2. En los siguientes documentos, podemos encontrar una variedad de paquetes y funciones para este propósito.
ggplot2 - Easy way to mix multiple graphs on the same page: click aquí.
Arranging multiple grobs on a page: click aquí.
Ejemplo 18 (grid.arrange)
library(gridExtra)
grid.arrange(Barra1, Barra2, nrow = 1)
Crear un nuevo documento R Markdown, realizando las siguientes actividades con ayuda de ggplot2:
Construya diagramas de barras bivariados considerando otras dos variables categóricas, “jugando” con sus propiedades.
Unir los gráficos con la función plot_grid, “jugando” con las opciones de la función.
Unir gráficos con otras funciones.
En todos los casos, interprete los resultados y diagramas resultantes.
LLinás, H., Rojas, C. (2005); Estadística descriptiva y distribuciones de probabilidad. Barranquilla: Editorial Universidad del Norte.
Consultar el documento RPubs :: Enlace y materiales de ayuda.
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.