Изменить легенду заказа бара ggplot
Я сделал барплот в ggplot, но, чисто по эстетическим соображениям, я хочу изменить порядок категорий легенды. Вот мой сценарий:
library(ggplot2)
df <- data.frame(Month = c(4, 5, 6, 7, 8, 9, 10, 11),
variable = rep(c("Outlier", "NOutlier"), 4),
value = c(8, 9, 10, 5, 12, 13, 9, 10))
hist_overall <- ggplot(df, aes(x = Month, y = value, fill = variable)) +
geom_bar(stat = "identity") +
scale_fill_manual("Legenda", values = c("Outlier" = "#1260AB", "NOutlier" = "#009BFF"))
hist_overall
Я не хочу ничего делать с данными, я просто хочу изменить порядок легенды, чтобы темно-синяя категория "Outlier" отображалась поверх светло-голубой категории "NOutlier".
Кто-нибудь знает быстрый способ сделать это для меня?
1 ответ
Следующее изменение df
должен делать то, что вы хотите. Мы определяем variable
как фактор и определить фактор levels
вручную, сортируя их по желанию.
df <- data.frame(Month = c(4, 5, 6, 7, 8, 9, 10, 11),
variable = factor(rep(c("Outlier", "NOutlier"), 4),
levels=(rev(levels(factor(c("Outlier", "NOutlier")))))),
value = c(8, 9, 10, 5, 12, 13, 9, 10))
hist_overall <- ggplot(df, aes(x = Month, y = value, fill = variable)) +
geom_bar(stat = "identity") +
scale_fill_manual("Legenda", values = c("Outlier" = "#1260AB", "NOutlier" = "#009BFF"))
Кроме того, вы можете повторно использовать ваше определение df
df <- data.frame(Month = c(4, 5, 6, 7, 8, 9, 10, 11),
variable = rep(c("Outlier", "NOutlier"), 4),
value = c(8, 9, 10, 5, 12, 13, 9, 10))
и определить уровни и их порядок следующим образом
levels(df$variable) <- c("Outlier", "NOutlier")
Также ознакомьтесь с этой ссылкой об изменении порядка меток легенды.