Управление порядком отображения легенды ggplot2
Кто-нибудь знает, как я могу получить контроль над упорядочением легенд в ggplot2?
Из того, что я вижу, порядок появляется, связанный с фактическими метками шкалы, а не с порядком объявления шкалы. Изменение заголовков шкалы изменяет порядок. Я сделал небольшой пример с использованием набора данных с бриллиантами, чтобы подчеркнуть это. Я пытаюсь использовать ggplot2 для серии графиков, и я хочу, чтобы одна переменная отображалась справа в них. В настоящее время это происходит только в некоторых из них, и я не понимаю, как обеспечить соблюдение желаемого порядка, сохраняя соответствующие метки ярлыков.
library(ggplot2)
diamond.data <- diamonds[sample(nrow(diamonds), 1000), ]
plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) +
geom_point() + opts(legend.position = "top", legend.box = "horizontal")
plot # the legend will appear shape then colour
plot + labs(colour = "A", shape = "B") # legend will be colour then shape
plot + labs(colour = "Clarity", shape = "Cut") # legend will be shape then colour
Ответы
Ответ 1
В пункте 0.9.1 правило определения порядка легенд секрет и непредсказуемо.
Теперь, в версии 0.9.2, dev в github, вы можете использовать параметр для установки порядка легенды.
Вот пример:
plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) +
geom_point() + opts(legend.position = "top")
plot + guides(colour = guide_legend(order = 1),
shape = guide_legend(order = 2))
![enter image description here]()
plot + guides(colour = guide_legend(order = 2),
shape = guide_legend(order = 1))
![enter image description here]()
Ответ 2
Мне кажется, что порядок легенды определяется количеством символов в именах шкал. (Да, я согласен, это кажется странным.)
Итак, обходным путем является прокладка ярлыков с пробелами:
plot + labs(colour = "Clarity", shape = " Cut")
![enter image description here]()
Я искренне надеюсь, что кто-то отправит правильное решение в ближайшее время!