Я наткнулся на это странное поведение с упорядочением легенд ggplot2 и просто не могу понять, что логика автоматического размещения легенд:
Моя цель: в сюжете с несколькими шкалами я хочу упорядочить их в другом (тематическом) порядке, чем в автоматическом. Но я не мог найти команду в opts() или guide(), чтобы сделать это для меня. И просто чтобы быть ясным: я не хочу менять элементы в легендах, это прекрасно работает, но расположение нескольких полных легенд.
Итак, сначала я предположил, что они упорядочены по типу, то есть по шкале, цвету и т.д. Но это не так, их положение меняется (см. ниже).
Алфавитный порядок? Нет.
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")
Дальнейшие позиции scale_colour (для обмена имени scale_size)
- "E": внизу
- "F" - "L": top
- "M" - "N": внизу
и он продолжает отображаться сверху внизу.
Факторный порядок? Нет.
## 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])
Длина заголовка? Нет. Теперь я остановлюсь с примером кода, но тот также дал флуктуирующие порядки, не зависящие от длины символа.
Любые идеи?