Ordenar múltiples leyendas / guías (¿qué es la lógica automática y cómo cambiarla?)

Me topé con este extraño comportamiento con ggplot2s ordenando leyendas y simplemente no puedo entender cuál es la lógica detrás de la colocación automática de las leyendas:

Mi objetivo: en una trama con varias escalas, quiero organizarlas en un orden diferente (temático) que el automático. Pero no pude encontrar un comando en opts () o guías () para hacer esto por mí. Y para ser claros: no quiero cambiar los elementos dentro de las leyendas, eso funciona bien, pero la disposición de varias leyendas completas.

Así que primero asumí que estaban ordenados por tipo, es decir, escala, color, etc. Pero ese no es el caso, su posición cambia (ver más abajo).

¿Orden alfabetico? No.

<code>    library(ggplot2) ## v0.9

    ## Scale_colour on top
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
    scale_size(name = "A") + scale_colour_discrete(name = "B")

    ## Reverse names --> scale_colour on bottom
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
    scale_size(name = "B") + scale_colour_discrete(name = "A")

    ## Change name B to C -->  scale_colour on bottom
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
    scale_size(name = "C") + scale_colour_discrete(name = "A")

    ## Change name B to D -->  scale_colour on top
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
    scale_size(name = "D") + scale_colour_discrete(name = "A")
</code>

Posiciones adicionales de scale_colour (por nombre de scale_size intercambiado)

"E": abajo"F" - "L": arriba"M" - "N": abajo

y sigue apareciendo en la parte superior y en la parte inferior.

Orden factorial? No.

<code>    ## From top to bottom: C - B - A
    fname <- factor(c("A","B","C"), levels = c("A","B","C"))
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl) +
    scale_size(name = fname[1]) + scale_colour_discrete(name = fname[2]) + scale_alpha(name=fname[3])

    ## From top to bottom: B - C - A
    fname <- factor(c("A","B","C"), levels = c("C","B","A"))
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl) +
    scale_size(name = fname[1]) + scale_colour_discrete(name = fname[2]) + scale_alpha(name=fname[3])

    ## From top to bottom: B - C - A
    fname <- factor(c("A","B","C"), levels = c("B","C","A"))
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl)+
    scale_size(name = fname[1]) + scale_colour_discrete(name = fname[2]) + scale_alpha(name=fname[3])
</code>

Longitud del título? No. Me detendré por ahora con el código de ejemplo, pero ese también produjo órdenes fluctuantes independientes de la longitud del carácter.

¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta