Carlos Jimémez-Gallardo
Estadístico
MSc Infórmatica Educativa
Universidad de La Frontera
carlos.jimenez@ufrontera.cl
Data Scientist
www.innovate.cl
cjimenez@innovate.cl
es evidente que R es una herramienta que, a los que realizamos Análisis de Datos, no ha dado bastante libertad. Al respecto es bueno tener ciertas consideraciones respectos de la presentacion.
un propósito, si tiene claro que quiere decir con el gráfico es más fácil escogerlo.
cúal(es) es (son) el tipo de variable que graficará.
a veces es necesario crear nuevas variables en el dataset
muchas veces el gráfico requiere de una tabla resumen.
Las librerias son esenciales para facilitarse la vida. Algunas de ellas
library(tidyverse) # carga un conjunto de librerias necesarias, entre ellas dplyr, ggplot2
library(dygraphs)
library(gganimate)
library(plotly)
library(esquisse) # para grafica dinamica
library(GGally) #grafica
library(ggthemes) #grafica
library(ggThemeAssist) #grafica
library(gdtools) #grafica
library(highcharter) #para graficar
library(hrbrthemes)
library(viridis) #grafica
library(lattice) # graficas avanzada
library(treemap)
library(corrplot)
library(ggmap)
library(maps)
library(xtable) # para tablas de contingencia
si bien todas ayudan, para este documento solo utilizaré GGPLOT2 para no hacer un documento tan extenso.
pueden encontrar el archivo de datos en el siguiente link: https://github.com/cjimenezgallardo/DATASETS
Los datos corresponden Sueldo percibidos en una empresa, y que como variable, se tienen:
dataej<-datos_empleados
names(dataej)
## [1] "ID" "Sexo" "FechaNAc" "educacion"
## [5] "labor" "Sueldo_actual" "Sueldo_inicial" "antigüedad"
## [9] "experiencia" "minoria"
CONSEJO: realice un bosquejo manual, que le permita entender que quiere mostrar, para que luego lo contrarreste con lo que apareció en R
nota: IDENTIFIQUE EL TIPO DE VARIABLE, esto define que tipos de gráficos pueden usarse. de lo contrario deberá crear nuevas variables o crear tablas resúmenes.
ggplot(data = dataej,aes(x=Sueldo_actual))+
geom_histogram()
NOTA: el histograma se hace respecto de todos los datos del DATASET original
es necesario mejorar algunas cosas, como por ejemplo.
Titulo
Rotulos,
Escalas
Colores etc.
número de barras (breaks, bins) idealmente utilice el método Sturges para su cálculo
ggplot(data = dataej,aes(x=Sueldo_actual))+
geom_histogram(color=1,
bins=9,
fill="red",alpha=0.5)+
ggtitle("Distribución Sueldo Actual")+
xlab("sueldo Actual")+
scale_x_continuous(limits = c(15000,140000))+
ylab("Cantidad")
ggplot(data = dataej,aes(x=Sueldo_actual))+
geom_density(color=1,
prob=TRUE,
fill="red",alpha=0.5)+
ggtitle("Distribución Sueldo Actual")+
xlab("sueldo Actual")+
scale_x_continuous(limits = c(15000,140000))+
ylab("Densidad")
**Puedes profundizar en los gráficos de barras en este link
ggplot(data=dataej,aes(x=labor))+
geom_bar( )
Promedio Sueldo por en la variable independiente
en primer lugar debe crearse una tabla resumen
promedio_sueldo_labor<-dataej %>%
group_by(labor) %>%
summarise(Promedio_sueldo =mean(Sueldo_actual))
ggplot(data=promedio_sueldo_labor,aes(x=labor, y=Promedio_sueldo))+
geom_bar(stat="identity")+
labs(title="PROMEDIO Sueldo por labor",
x="LABOR",
y= "Promedio")
Nota: En ocasiones la variable CUANTITATIVA debe transformarse para que sea considerada como carácter
ggplot(data = dataej, aes(x=Sexo, fill=as.factor(labor))) +
geom_bar(position = "fill")
Puedes profundizar en los gráficos de líneas en este link
Nota: Recordar que la variable X o el eje horizontal debe ser continuo
promedio_sueldo_ed<-dataej %>%
group_by(educacion) %>%
summarise(Promedio_sueldo =mean(Sueldo_actual))
ggplot(data=promedio_sueldo_ed,aes(x=educacion, y=Promedio_sueldo ))+
geom_line()+
geom_point()
para variaciones ver GRAFICA DE LINEAS EN R
nota: Útil para análisis de valores atípicos en variables continuas.
Solo la variable dependiente
ggplot(dataej, aes(y=Sueldo_actual)) +
geom_boxplot()
Variable dependiente por variable independiente
ggplot(dataej, aes(x=as.factor(labor) , y=Sueldo_actual,fill=as.factor(labor))) +
geom_boxplot()
nota: Útil con variables cuantitativas
ggplot(data = dataej,aes(x=educacion, y=Sueldo_actual))+
geom_point()
nota: una variable, pocos sectores, crear tabla resumen nota: no recomiento hacer este gráfico en R,
tabla0 <- dataej %>%
group_by(labor) %>%
summarise(Total=n())
print(tabla0)
## # A tibble: 3 × 2
## labor Total
## <dbl> <int>
## 1 1 363
## 2 2 27
## 3 3 84
tabla_circ <- tabla0 %>%
arrange(desc(labor)) %>%
mutate(prop = Total / sum(tabla0$Total) *100) %>%
mutate(ypos = cumsum(prop)- 0.5*prop ) # calcula posicion de la etiqueta
print(tabla_circ)
## # A tibble: 3 × 4
## labor Total prop ypos
## <dbl> <int> <dbl> <dbl>
## 1 3 84 17.7 8.86
## 2 2 27 5.70 20.6
## 3 1 363 76.6 61.7
ggplot(tabla_circ, aes(x="", y=prop, fill=as.factor(labor))) +
geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
theme_void() +
theme(legend.position="none") +
geom_text(aes(y = ypos, label = labor), color = "white", size=6) +
scale_fill_brewer(palette="Set1")
nota:
complejo para algunos de entender,
debe pensar muy bien la información a mostrar
promedio_sueldo_ed<-dataej %>%
group_by(educacion, labor) %>%
summarise(Promedio_sueldo =mean(Sueldo_actual))
## `summarise()` has grouped output by 'educacion'. You can override using the
## `.groups` argument.
ggplot(dataej, aes(x = as.factor(educacion),
y = Sueldo_actual,
col = as.factor(labor),
group = labor)) +
geom_point() +
geom_line() +
coord_polar()
ggplot(data = dataej, aes(x = as.factor(labor))) +
geom_bar(fill="lightblue", colour= "black") +
coord_polar()
nota:
tabla_mosaico <- xtabs(~labor+educacion,data = dataej)
tabla_mosaico
## educacion
## labor 8 12 14 15 16 17 18 19 20 21
## 1 40 176 6 111 24 3 2 1 0 0
## 2 13 13 0 1 0 0 0 0 0 0
## 3 0 1 0 4 35 8 7 26 2 1
mosaicplot(~labor+Sexo,data = dataej, color=3:5)
dataej$LABOR[dataej$labor==1]<-c("ADMINISTRATIVO")
## Warning: Unknown or uninitialised column: `LABOR`.
dataej$LABOR[dataej$labor==2]<-c("SEGURIDAD")
dataej$LABOR[dataej$labor==3]<-c("EJECUTIVO")
treemap(dataej,
index = c("LABOR"),
vSize = "Sueldo_actual",
type = "index",
palette = "Set1",
fontsize.title = 14)
treemap(dataej,
index = c("LABOR","Sexo"),
vSize = "Sueldo_actual",
vColor = "Sexo",
type = "categorical",
palette = "Set1",
fontsize.title = 14)
ggplot(dataej, aes(x=educacion,
y=experiencia,
color=Sexo))+
geom_point(aes(size = Sueldo_actual))