Los gráficos de violín son una alternativa a los diagramas de caja que resuelven los problemas relacionados con la visualización de la distribución subyacente de los datos, ya que estos gráficos muestran una estimación de la densidad tipo núcleo de las observaciones. La caja es curvada para dar una apreciación de la densidad de los datos. Si la distribución de los datos sigue una curva normal, saldrá entonces como una curva de campana orientada verticalmente.
La función geom_violin () de la librería ggplot2 se usa para producir un diagrama de violín.
El conjunto de datos debe tener características numéricas continuas. Esto se debe a que los gráficos de violín se utilizan para visualizar distribuciones de datos continuos. Muestran el rango, la mediana y la distribución de los datos:
Ya que hay una distribución específica que nos gustaría ver segmentada por tipo.
Preparar conjunto de datos:
View(ToothGrowth)
Para este caso práctico se utilizará el conjunto de datos ToothGrowth (crecimiento dental) que es una base de datos por defecto de R, que es la longitud de los odontoblastos (dientes) en cada uno de los 10 conejillos de indias en tres niveles de dosis de vitamina C (0,5, 1 y 2 mg) con dos métodos de administración (jugo de naranja o ácido ascórbico).
El archivo contiene 60 observaciones de 3 variables
Y convertimos la variable “dose” de numerica a factor para que sea categórica:
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
head(ToothGrowth)
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
library(ggplot2)
par(mfrow = c(1,3))
p <- ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_violin()
p
Lo que se puede entender de estos 3 gráficos de violín, es que el que tiene más brecha de datos es el tercero (derecha), ya que nos dice que entre 23 y 27 (ordenas) hay una gran cantidad de datos o donde se agrupan más, cosa similiar que pasa en el gráfico 1, de 8 a 12 (ordenadas).
En el gráfico 2 se concentran los datos más equitativamente a lo largo del violín.
p + coord_flip()
También se puede crear un gráfico de violín solamente con la librería “vioplot”:
library(vioplot)
vioplot(ToothGrowth)
vioplot(ToothGrowth,
col = 2, # Color del área
rectCol = "firebrick2", # Color del rectángulo
lineCol = "azure", # Color de la línea
colMed = "aquamarine2", # Color del símbolo pch
border = "navajowhite4",# Color del borde del violín
pchMed = 16, # Símbolo pch para la mediana
plotCentre = "points") # Si "line", dibuja una línea en la mediana