Los histogramas, box-plots y diagramas de violín son de los gráficos más empleados y útiles en la visualización de datos para variables cuantitativas de tipo continuo.
Vamos a ver cómo generar este tipo de gráficos con
ggplot2
. En primer lugar, cargamos la librería
ggplot2
.
library(ggplot2)
Para trabajar con los distintos tipos de gráficos, consideremos el
conjunto de datos reales sobre la estructura salarial en España en el
año 2018. Este conjunto de datos tiene una variable cualitativa
Sexo
con dos factores; una variable cuantitativa discreta
AgnoAnti
, que indica los años de antigüedad, y 6 variables
cuantitativas continuas: SalarioBase
, que indica el salario
base mensual, Complementos
, que representa los complementos
salariales recibidos mensualmente, IRPF
indica las
retenciones IRPF mensuales, BaseSS
proporciona la base de
cotización a la Seguridad Social, CotizaSS
es la cotización
realizada a la Seguridad Social, y finalmente SalarioBruto
indica el salario bruto anual.
Recuerda situarte en el directorio correcto para leer los datos.
if(!"readxl" %in% installed.packages())
install.packages("readxl")
library(readxl)
data <- read_excel("Salario2018.xlsx")
Como tenemos distintas variables cuantitativas continuas, podemos
trabajar con las mismas para realizar los distintos gráficos. Además,
como disponemos de una variable cualitativa, Sexo
, vamos a
mostrar que ésta nos permite realizar sobre una misma representación el
mismo gráfico diferenciado por ejemplo por colores. Esto es, por
ejemplo, considerando la variable SalarioBase
vamos a
representar el histograma según la variable Sexo
.
Para representar el histograma utilizamos la función
geom_histogram()
de la librería ggplot2
, y
como queremos diferenciar dicha variable según el sexo, vamos a utilizar
distintos colores, de modo que en la estética del gráfico
aes()
indicaremos que fill=Sexo
. Dentro de las
características que se pueden modificar en el histograma, nos
encontramos bins
que indica el número de barras a
representar, y alpha
que permite controlar la transparencia
de los histogramas.
ggplot(data)+
aes(x=SalarioBase,fill=Sexo)+
geom_histogram(bins=50,alpha=0.75)
Como hemos visto en gráficos anteriores, podemos modificar los
títulos de los ejes, y del gráfico, cambiar la leyenda, y el tema del
gráfico. En este caso, las barras están apiladas. Si lo que interesa es
comprobar los histogramas separados, añadimos
position="identity
.
ggplot(data)+
aes(x=SalarioBase,fill=Sexo)+
geom_histogram(bins=50,alpha=0.75,position="identity")+
labs(title="Histograma",x="Salario Base",y="")+
guides(colour="none")+
theme_bw()
Podemos observar que en el histograma se muestran las frecuencias
absolutas de las barras. Si queremos mostrar la frecuencia relativa, que
está asociada a la función de densidad, en la función
geom_histogram()
debemos añadir
aes(y=..density..)
.
ggplot(data)+
aes(x=SalarioBase,fill=Sexo)+
geom_histogram(aes(y=..density..),bins=50,alpha=0.75,position="identity")+
labs(title="Histograma",x="Salario Base",y="")+
guides(colour="none")+
theme_minimal()
Por otro lado, si en lugar de mostrar los histogramas se quiere
representar las densidades, debemos utilizar la función
geom_density()
.
ggplot(data)+
aes(x=SalarioBase,fill=Sexo)+
geom_density(alpha=0.75)+
labs(title="Densidad",x="Salario Base",y="")+
guides(colour="none")+
theme_minimal()
La librería ggplot2
permite representar a la vez tanto
el histograma como la densidad. Para mostrarlo con claridad, debemos
indicar que la transparencia de las densidades sea 0. Además, podemos
modificar el tipo de línea y el color de la función de densidad según el
sexo, para ello se añade
aes(linetype=Sexo,colour=Sexo)
.
ggplot(data)+
aes(x=SalarioBase,fill=Sexo)+
geom_histogram(aes(y=..density..),bins=50,alpha=0.75,position="identity")+
geom_density(aes(linetype=Sexo,colour=Sexo),alpha=0)+
labs(title="",x="Salario Base",y="")+
theme_classic()
En cuanto a los Box-plot o diagramas de cajas y bigotes, en la
librería ggplot2
se obtiene con la función
geom_boxplot()
.
ggplot(data)+
aes(x=SalarioBase,fill=Sexo)+
geom_boxplot(alpha=0.5)+
labs(title="Box-plot",x="Salario Base",y="")+
theme_light()
Finalmente, la librería ggplot2
permite crear un
gráfico, llamado diagrama de violin, que unifica la función de densidad
del gráfico junto con el formato del gráfico Box-plot. Para obtenerlo,
se utiliza la función geom_violin()
. En el eje x debemos
situar la variable Sexo
y en el eje y la variable
SalarioBase
, y como consecuencia no tiene sentido añadir
una leyenda, por lo que utilizando la función guides()
se
puede eliminar.
ggplot(data)+
aes(x=Sexo,y=SalarioBase,fill=Sexo)+
geom_violin(alpha=0.5)+
labs(title="Diagrama de violin",x="Salario Base",y="")+
guides(fill="none")+
theme_bw()