
Visualizando las puntuaciones
Gonzalo Garcia-Castro
Código:vignettes/puntuaciones.Rmd
puntuaciones.Rmd
En cada una de estas catas a ciegas de El Comidista (disponibles en su canal de YouTube) se presenta una serie de productos de marcas industriales a una o dos personas expertas en ese tipo de productos. En los vídeos en los que hay más de una persona puntuando los productos, el equipo de edición asigna al producto la media de las puntuaciones. La base de datos puntuaciones
muestra las puntuaciones de cada persona del jurado de forma individual. Ver ?puntuaciones
para más información sobre esta base de datos.
Primero cargamos los paquetes que necesitaremos:
library(comidistar) # contiene los datos y funciones ayudantes
library(dplyr) # para manejar los datos en formato tidy
library(ggplot2) # para visualizar los datos
Ahora cargamos los datos y los agregamos:
# cargamos los datos
data("puntuaciones")
puntuaciones <- puntuaciones %>%
left_join(count(puntuaciones, producto)) %>% # pegar numero de observaciones de cada producto
mutate(producto_n = paste0(producto, " (n = ", n, ")")) %>%
select(producto_n, puntuacion)
puntuaciones
#> # A tibble: 390 x 2
#> producto_n puntuacion
#> <chr> <dbl>
#> 1 Yogur (n = 8) 5
#> 2 Yogur (n = 8) 5
#> 3 Yogur (n = 8) 5
#> 4 Yogur (n = 8) 6
#> 5 Yogur (n = 8) 8
#> 6 Yogur (n = 8) 5
#> 7 Yogur (n = 8) 9
#> 8 Yogur (n = 8) 6
#> 9 Salsa de tomate (n = 8) 6
#> 10 Salsa de tomate (n = 8) 7
#> # ... with 380 more rows
Por último, visualizamos los datos:
# distribución de cada producto
puntuaciones %>%
# si hay mas de dos puntuaciones con el mismo
# valor con el mismo producto, hacer mas grandes
count(producto_n, puntuacion) %>%
ggplot() +
aes(
x = puntuacion,
y = reorder(producto_n, puntuacion) # ordenar productos de mejor a peor
) +
# linea vertical de referencia en 5
geom_vline(
xintercept = 5,
colour = "grey",
size = 1
) +
# puntuaciones individuales (cuantas mas puntuaciones iguales, mas grandes)
geom_point(
aes(size = n),
stroke = 0.5, # borde del circulo mas delgado
colour = "orange"
) +
# calcular media y error tipico de cada producto
stat_summary(
fun.data = "mean_se",
# queremos un circulo en la media y una barra de error para el error tipico
geom = "pointrange",
size = 0.65,
shape = 1,
stroke = 1
) +
labs(
x = "Puntuaci\u00f3n",
y = "Producto",
colour = "Intervalo de confianza",
title = "Puntuaci\u00f3n asignada a cada producto",
subtitle = "Los c\u00EDrculos naranjas y barras de error indican la media y error t\u00EDpico"
) +
# poner la leyenda en una sola linea (son dos por defecto)
guides(size = guide_legend(nrow = 1)) +
# poner limites al eje x
scale_x_continuous(
limits = c(-2.5, 10),
breaks = seq(-3, 10, 1)
) +
# personalizar tema de ggplot2 (?theme_comidistar)
theme_comidistar() +
theme(
# poner titulo a la izquierda del plot
plot.title.position = "plot",
# eliminar titulo del eje Y
axis.title.y = element_blank(),
# eliminar rejilla del eje Y
panel.grid.major.y = element_blank(),
# rejilla del eje X punteada y de color gris
panel.grid.major.x = element_line(
colour = "grey",
linetype = "dotted"
),
# poner leyenda arriba
legend.position = "top"
)

Distribución de las puntuaciones de las catas a ciegas para cada producto. Distribución de las puntuaciones (eje X) de cada producto (eje Y). El punto y su intervalo (en negro) indican la media y el intervalos que contiene el 95% de las puntuaciones de la distribución. Las líneas verticales dentro de cada distribuciu00f3n indican las puntuaciones individuales para cada marca, por parte de una de las personas del jurado.