El conjunto de datos usado en los siguientes ejemplos es warpbreaks
, que proporciona el número de roturas de urdimbre en un hilo, el tipo de lana y el nivel de tensión.
# Conjunto de datos de muestra
warpbreaks
geom_violin
Un gráfico de violín por grupo se puede crear en ggplot pasando la variable numérica (breaks
) y la categórica (tension
) a aes
y usando geom_violin
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks)) +
geom_violin()
Gráfico de violín horizontal
Si quieres que el gráfico de violín sea horizontal en lugar de vertical puedes pasar la variable categórica (tension
) a y
o usar coord_flip
, como en el ejemplo siguiente.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks)) +
geom_violin() +
coord_flip()
Evitar recortar las colas
Por defecto, las colas de los violines se cortan en base al rango de los datos. Si quieres evitarlo establece trim = FALSE
dentro de geom_violin
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks)) +
geom_violin(trim = FALSE)
Añadir cuantiles
Puedes agregar los cuantiles que quieras pasando un vector al argumento draw_quantiles
, como en el ejemplo siguiente.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks)) +
geom_violin(trim = FALSE,
draw_quantiles = c(0.25, 0.5, 0.75))
Añadir box plots
Puedes superponer box plots a los gráficos para mostrar la mediana o los datos atípicos. Recuerda crear un box plot estrecho.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07)
Selección de ventana
Los gráficos de violín son estimaciones de densidad tipo núcleo de los datos, por lo que para su cálculo se necesita una ventana. La ventana por defecto se puede cambiar con bw
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks)) +
geom_violin(trim = FALSE, bw = 10) +
geom_boxplot(width = 0.07)
Color de fondo para cada grupo
Si quieres colorear los violines por grupo pasa la variable categórica al argumento fill
de aes
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07)
Color de fondo por subgrupo
Si tienes otra variable categórica puedes crear subgrupos y colorear las áreas en base a estos subgrupos.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = wool)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07, position = position_dodge(width = 0.9))
Escala de color
Los colores por defecto se pueden cambiar. Por ejemplo, puedes usar la paleta brewer de la siguiente manera:
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE) + +
geom_boxplot(width = 0.07)
scale_fill_brewer()
Colores personalizados
Si quieres usar tu propia paleta de colores puedes usar scale_fill_manual
y pasar los colores que quieras al argumento values
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07) +
scale_fill_manual(values = c("#BCE4D8", "#49A4B9", "#2C5985"))
Transparencia
La transparencia se puede modificar con el argumento alpha
de la función geom_violin
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE,
alpha = 0.5) +
geom_boxplot(width = 0.07)
Color del borde
El argumento color
de geom_violin
se puede usar para cambiar el color de los bordes.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE,
color = "blue") +
geom_boxplot(width = 0.07)
Color del borde por grupo
Sin embargo, si quieres establecer un color de borde basado en grupos, puedes pasar la variable categórica al argumento color
de la función aes
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, color = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07)
Colores de borde personalizados
De manera similar a cambiar los colores de fondo también puedes personalizar los colores del borde, pero con scale_color_manual
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, color = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07) +
scale_color_manual(values = c("#F4D166", "#EC6E1C", "#B71D3E"))
Título de la leyenda
El título de la leyenda muestra el nombre de la variable categórica. Para cambiar el título por defecto usa la función guides
como se muestra en el ejemplo siguiente.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07) +
guides(fill = guide_legend(title = "Título"))
Etiquetas
Las etiquetas de la leyenda son los nombres de los grupos. Estas etiquetas se pueden cambiar con scale_fill_manual
si cambias los colores de fondo o con scale_fill_hue
para cambiar solo las etiquetas.
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07) +
scale_fill_hue(labels = c("G1", "G2", "G3"))
Eliminar la leyenda
Por último, si quieres eliminar la leyenda puedes establecer su posición a "none"
o añadir show.legend = FALSE
a geom_violin
y geom_boxplot
(si lo añadiste).
# install.packages("ggplot2")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, fill = tension)) +
geom_violin(trim = FALSE) +
geom_boxplot(width = 0.07) +
theme(legend.position = "none")
También te puede interesar