Управление порядком отображения легенды ggplot2
кто-нибудь знает как я могу получить контроль заказов легенд в ggplot2?
из того, что я вижу, порядок выглядит связанным с фактическими метками масштаба, а не с порядком объявления масштаба. Изменение заголовков шкалы изменяет порядок. Я сделал небольшой пример, используя набор данных diamond, чтобы выделить это. Я пытаюсь использовать 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
2 ответов:
в 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))
plot + guides(colour = guide_legend(order = 2), shape = guide_legend(order = 1))
Мне кажется, что порядок легенды определяется количеством символов в именах шкалы. (Да, я согласен, это кажется странным.)
Итак, обходной путь состоит в том, чтобы заполнить ваши метки пробелами:
plot + labs(colour = "Clarity", shape = " Cut")
Я искренне надеюсь, что кто-то публикует правильное решение в ближайшее время!



Comments