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)
a=data.frame(futbol)
a %>% mutate(longp=factor(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")))
#GRAFICO de BARRAS
# Para cambiar este orden usamos la funcion "factor".
a$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"))
Tabla <- a %>% 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_bw()+
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)
futbol3=filter(futbol, (longp=="< 0.81 m") |(longp=="0.91 a 1.00 m"))
futbol3=mutate(futbol3,
dist2=ifelse(futbol3$dist<50,"[30;50)","[50;115)"))
mosaic( ~ longp + dist2, data = futbol3, direction = "v", shade = TRUE)
futbol4=filter(futbol, (longp=="< 0.81 m") |(longp=="1.01 a 1.10 m"))
futbol4=mutate(futbol4,
dist2=ifelse(futbol4$dist<50,"[30;50)","[50;115)"))
mosaic( ~ longp + dist2, data = futbol4, direction = "v", shade = TRUE)
futbol5=filter(futbol, (longp=="< 0.81 m") |(longp=="1.11 a 1.20 m"))
futbol5=mutate(futbol5,
dist2=ifelse(futbol5$dist<50,"[30;50)","[50;115)"))
mosaic( ~ longp + dist2, data = futbol5, direction = "v", shade = TRUE)
futbol6=filter(futbol, (longp=="< 0.81 m") |(longp=="1.21 m y +"))
futbol6=mutate(futbol6,
dist2=ifelse(futbol6$dist<50,"[30;50)","[50;115)"))
mosaic( ~ longp + dist2, data = futbol6, direction = "v", shade = TRUE)
Observamos que el p-value es muy proximo a cero en todos los test, por lo tanto rechazamos la hipótesis de independencia. Hay relacion entre la longitud de pierna y la distancia, respecto a las categorias estudiadas.
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 = "")
Georreferencia
#Mapas
library(sf)
library(tmap)
#Varios
library(dplyr)
library(tidyr)
library(readxl)
library(ggplot2)
library(stringr)
#Carga de los datos
library(spData)
data(world)
world1 <- world[with(world, order(world$continent)), ]
america_del_sur<-world1[165:177, ]
Paquete sf
#paquete sf
ggplot(data = america_del_sur) +
aes(fill = lifeExp) +
geom_sf() +
scale_fill_gradient(low = "red", high = "green") +
theme_bw() +
ggtitle("Esperanza de Vida (en Años) por País - Datos 2014")
Paquete tmap
#paquete tmap
world1 <- world[with(world, order(world$continent)), ]
africa<-world1[1:51, ]
tmap_mode("view") #Modo Interactivo
mapa_funcion <- function(x) {
africa %>%
st_transform(crs = "+proj=longlat +datum=WGS84") %>% #modificamos proyecci?n
select(gdpPercap = {{x}}, name_long) %>% #filtramos por regi?n
tm_shape() +
tm_borders("black", lwd = 2) +
tm_polygons(col = "gdpPercap", legend.show = TRUE) +
tm_text(text = "name_long", size = 0.5) +
tm_style("cobalt")
}
tmap_mode("plot")
## tmap mode set to plotting
tmap_arrange(
mapa_funcion("gdpPercap"),
ncol = 1
)