Как изменить порядок элементов в легенде?
Я пытаюсь изменить порядок отображения элементов легенды. Я провел около часа, но безрезультатно.
Вот пример настройки:
library(ggplot2)
set.seed(0)
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10'))
И вот одна из многих вещей, которые я пробовал:
ggplot(d, aes(x = x, y = y)) +
geom_point(size=7, aes(color = a, order = as.numeric(a)))
(Моя наивная надежда, конечно, заключалась в том, что элементы легенды будут отображаться в числовом порядке: 1, 3, 10.)
2 ответа
ggplot
будет обычно упорядочивать ваши значения факторов в соответствии с levels()
фактора. Лучше всего убедиться, что это именно тот порядок, который вам нужен, иначе вы будете бороться с большим количеством функций в R, но вы можете вручную изменить это, манипулируя цветовой шкалой:
ggplot(d, aes(x = x, y = y)) +
geom_point(size=7, aes(color = a)) +
scale_color_discrete(breaks=c("1","3","10"))
Порядок меток легенды можно изменить, изменив порядок и изменив значения в столбце a
к фактору: d$a <- factor(d$a, levels = d$a)
Итак, ваш код будет выглядеть так
library(ggplot2)
set.seed(0)
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10'))
d$a <- factor(d$a, levels = d$a)
ggplot(d, aes(x = x, y = y)) +
geom_point(size=7, aes(color = a))
Обратите внимание, что теперь в легенде: 1 красный, 3 зеленый и 10 синий цвет