ggplot2: ¿Invirtiendo el orden de una variable de carácter discreto para cada faceta en una escala libre?

Me gustaría trazar un gráfico de puntos ggplot2 facetado. El eje x es continuo, el eje y es una lista de animales. Dos variables se trazan y se facetan de acuerdo con el comportamiento de comer.

El eje y está en una escala libre porque cada animal solo aparece en una categoría de comportamiento alimentario.

library(ggplot2)

# First clean up the data set:
msleep.noNA <- msleep[!is.na(msleep$vore),]
msleep.noNA.red <-  msleep.noNA[c(1,3,6,7)]
msleep.noNA.red <- msleep.noNA.red[!is.na(msleep.noNA.red[4]),]
msleep.noNA.red <- melt(msleep.noNA.red)

pg <- ggplot(msleep.noNA.red, aes(value, name, colour = variable)) +
      geom_point() +
      facet_grid(vore ~ ., scale="free_y", space = "free_y")
pg

# Try to reverse order of the y axis:
pg + scale_y_reverse()

# Not possible because its a factor, but it's not classified as such:
class(msleep.noNA.red$name)

¿Alguien tiene alguna pista sobre cómo puedo hacer que la lista de nombres de animales aparezca en orden alfabético en cada trama secundaria?

Respuestas a la pregunta(1)

Su respuesta a la pregunta