Это может быть очень частный случай, который я пытался выполнить, но тем не менее весьма полезный.Мне нужно отсортировать внутренние элементы ggplot2 facet_grid по нескольким повторяющимся значениям на основе другой переменной.Пример с заданным data.frame df
(показано ниже).При использовании factor
вы можете определить конкретный порядок для его уровней, но в этом случае существуют разные порядки, потому что он основан на третьем значении, а в примере для сетки var2 = TRUE
, A
будетбыть первым (ранжированным) элементом и для сетки var2 = FALSE
, A
должен быть последним.
df <- data.frame(var1 = c(TRUE, TRUE, FALSE, FALSE, FALSE),
var2 = c('C','A','A','Z','C'),
n = c(5,10,1,3,3))
ggplot(df, aes(reorder(var2,n), n)) +
geom_col() + facet_grid(var1~.) + coord_flip()
Я хочучтобы отсортировать обе сетки по переменной n
, результатом должны быть C, Z, A для сетки FALSE
и A, C, Z для сетки TRUE
.Должна быть функция ungroup()
для переупорядочения ggplot2
...
БОНУС: Еще сложнее, у меня есть дружественная к тидивусу функция в библиотеке lares для расчета и построения частот (freqs
).Он использует ленивую оценку !!!variables
для каждой переменной, и иногда этих переменных может быть больше одной.Например, distr(df, var1, var2, var3)
или просто distr(df, var1)
.Вот почему я не могу (или, по крайней мере, не знаю, как) динамически преобразовать эти переменные в отсортированные факторы, если это решение.
Есть ли способ сделать это без использования * 1032?* или gridExtra
, который создает разные графики, а затем склеивает их все вместе?Это слишком медленно ...