Gráfico de Barras
Una de las alternativas más populares cuando contamos con variables cualitativas son los gráficos de barras. El alto de cada rectángulo representa la frecuencia (absoluta o relativa) de las diferentes categorías que estamos comparando. Estos gráficos son simples de construir e interpretar: mientras más extensa la barra, mayor frecuencia posee la categoría asociada.
Utilizando los datos futbol, se presenta el codigo y su correspondiente gráfico de barras.
#Paquetes Necesarios
library(vcd)
library(dplyr)
library(plotly)
library(janitor)
library(ggplot2)
library(ggalluvial)
library(ggcleveland)
library(treemapify)
#Grafico de Barras
# Para cambiar este orden usamos la funcion "factor".
futbol$longp = factor(futbol$longp, levels=c("1.21 m y +",
"1.11 a 1.20 m",
"1.01 a 1.10 m",
"0.91 a 1.00 m",
"0.81 a 0.90 m",
"< 0.81 m"))
levels(futbol$longp)
Tabla <- futbol %>% group_by(longp) %>% summarise(Total=n()) %>%
dplyr::mutate(Porcentaje = round(Total/sum(Total)*100, 0))
ggplot(data = Tabla) +
aes(x=longp, y = Porcentaje, fill = Porcentaje) +
geom_bar(stat = "identity", position="dodge")+
geom_label( aes(label =paste0(Porcentaje, "%" )),
vjust = 0.5, size = 5,hjust=1,
color = "black"
)+
scale_fill_continuous(low = "lightblue", high = "blue") +
labs(x = "Longitud de pierna", y="Porcentaje") +
coord_flip()+
theme(legend.position = "none")
Se observa que un 19% de los futbolistas tienen una longitud de pierna de 0.81 o menos, esta es la categoría mas frecuente entre los mismos.
Gráfico de Mosaicos
Los gráficos de mosaico son alternativas a los gráficos de barras bivariados. En este tipo de visualizaciones, el área de cada rectángulo puede interpretarse como la distribución condicional: el porcentaje de área que ocupa el rectángulo asociado a las categorías (Xi,Yj), dentro de la columna donde se encuentra, coincide con la proporción de individuos de la categoría Xi que poseen la característica Yj.
#Grafico de Mosaicos
futbol2=filter(futbol,(longp=="< 0.81 m") |(longp=="0.81 a 0.90 m"))
futbol2=mutate(futbol2,
dist2=ifelse(futbol2$dist<50,"[30;50)","[50;115)")
)
mosaic( ~ longp + dist2, data = futbol2, direction = "v", shade = TRUE)
Observamos que el p-value asociado al test es muy pequeño, por lo tanto rechazamos la hipótesis de independencia.Hay relacion entre la longitud de pierna y la distancia.
Alluvial Plots
Los diagramas alluvial tienen un objetivo similar al de los gráficos de mosaico: representar las distribuciones conjuntas y/o condicionales entre múltiples variables categóricas.
#Alluvial Plots
load("C:/Users/Carola/Downloads/cultivos.RData")
cultivos2 <- cultivos %>%
filter(prov=="CORDOBA"|prov=="LA PAMPA"|prov=="SANTA FE") %>%
filter(cultivo=="Girasol"|cultivo=="Sorgo") %>%
group_by(prov,cultivo) %>%
summarise(prod = sum(prod))
cultivos2=mutate(cultivos2,"Tn. (100.000)"=prod/100000)
cultivos2 %>%
as.data.frame() %>%
ggplot() +
aes(axis1 = prov, axis2 = cultivo, fill = `Tn. (100.000)`, y = prod) +
geom_alluvium() + #flujos
geom_stratum( #columnas
fill = "black",
color = "lightgrey",
width = 0.1
) +
geom_label( #etiquetas
stat = "stratum",
aes(label = after_stat(stratum)),
fill = "white",
size = 2
) +
scale_x_discrete(limits = c("Provincia", "Cultivo"), expand = c(0, 0)) +
scale_y_continuous(name = "Produccion en (100.000 Tn.)", breaks = seq(0, 15,5))+
scale_fill_continuous(low = "yellow", high = "red")
Treemaps
Un treemap es un tipo de gráfico de mosaico donde el área de cada rectángulo se asocia a su frecuencia, o bien a otra variable numérica de interés
titanic=as.data.frame(Titanic)
titanic=mutate(titanic,Survived=ifelse(Survived=="No","No Sobrevivió","Sobrevivió"))
titanic2 <- titanic %>%
group_by(Class, Survived) %>%
summarise(Freq = sum(Freq)) %>%
ungroup()
titanic_tot <- titanic2 %>%
group_by(Class) %>%
summarise(Freq = sum(Freq))%>%
ungroup() %>%
rename(Survived = Class) %>%
mutate(Class = "Total Titanic") %>%
bind_rows(titanic2)%>%
mutate(etiq = ifelse(Class != "Total Titanic",
paste0(Survived, "_", Class),
as.character(Survived)))
plot_ly(
type = "treemap",
labels = titanic_tot$etiq, #variable de menor jerarqua (etiqueta única)
parents = titanic_tot$Class, #variable de mayor jerarquia
values = titanic_tot$Freq, #tamaño de cada rectangulo
hoverinfo = "label+value+percent parent+percent root",
textinfo = "label+value+percent parent+percent root"
)%>%
add_trace(branchvalues = "total", name = "")