Обратный порядок перерывов в ggplot, ggridges
У меня есть набор данных с длиной (целое число) и год (фактор), который я хочу построить с помощью ggridges. Вот аналогичный набор данных с целочисленными и факторными данными. Как изменить порядок видов (то есть фактор) на оси у?
library(ggplot2)
library(ggridges)
library(viridis)
library(datasets)
order <- c("setosa", "versicolor", "virginica")
ggplot(iris, aes(x = Sepal.Length, y = Species, fill = ..x..), order(Species)) +
geom_density_ridges_gradient(scale = 3, rel_min_height = 0.01) +
scale_fill_viridis(name = "Sepal.Length", option = "A") +
theme_ridges() +
labs(title = 'Sepal Length distributions for irises')
Вот, order(Species)
или же order(order)
не работает
Я старался:
scale_y_reverse(breaks=order), expand = c(0.01, 0))
но потом понял, что это для непрерывных переменных (пробовал с годом как числовой - не работал).
1 ответ
Решение
Это то, что вы хотите? я добавил mutate(Species = factor(Species, levels = rev(myorder)))
к вашему коду
library(dplyr)
library(ggplot2)
library(ggridges)
library(viridis)
library(datasets)
myorder <- c("setosa", "versicolor", "virginica")
iris <- iris %>%
mutate(Species = factor(Species, levels = rev(myorder)))
ggplot(iris, aes(x = Sepal.Length, y = Species, fill = ..x..), Species) +
geom_density_ridges_gradient(scale = 3, rel_min_height = 0.01) +
scale_fill_viridis(name = "Sepal.Length", option = "A") +
theme_ridges() +
labs(title = 'Sepal Length distributions for irises')
#> Picking joint bandwidth of 0.181
Создано 2018-09-27 пакетом представлением (v0.2.1.9000)