Удаление неиспользуемых уровней в фасетах с помощью ggplot2 [закрыто]

19

Можно ли отбросить уровни, которые не используются в фасетах ggplot2s? Это мой код:

tab = as.data.frame(cbind(groups = mtcars$cyl, names = row.names(mtcars), val = mtcars$mpg, N = mtcars$disp))
tab$N = as.numeric(tab$N)

ggplot(tab, aes(names,val)) + 
geom_point() + coord_flip() + 
theme_bw() + 
facet_grid(groups ~ ., drop=TRUE)#, scales="free", as.table=F, space="free")

Я попробовал drop=Tпереключатель, но это не помогает. Что я делаю неправильно?

mrrrau
источник
Для подобных вопросов по программированию (а не по статистике), пожалуйста, перейдите на StackOverflow
smci

Ответы:

27

Данные вашего примера просто не имеют никаких неиспользуемых уровней, которые можно отбросить. Проверьте поведение в этом примере:

dat <- data.frame(x = runif(12),
                  y = runif(12),
                  grp1 = factor(rep(letters[1:4],times = 3)),
                  grp2 = factor(rep(LETTERS[1:2],times = 6)))

levels(dat$grp2) <- LETTERS[1:3]

ggplot(dat,aes(x = x,y = y)) + 
    facet_grid(grp1~grp2,drop = FALSE) + 
    geom_point()

ggplot(dat,aes(x = x,y = y)) + 
    facet_grid(grp1~grp2,drop = TRUE) + 
    geom_point()

Возможно, вы хотите изменить, какие факторы отображаются на вертикальной оси в каждом фасете, и в этом случае вы хотите установить scalesаргумент и использовать facet_wrap:

ggplot(tab, aes(names,val)) + 
    geom_point() + coord_flip() + 
    theme_bw() + 
    facet_wrap(~groups,nrow = 3,scales = "free_x")
Joran
источник
О, теперь я вижу, что он делает. Мое намерение состояло в том, чтобы построить только те уровни в каждом аспекте, которые фактически сгруппированы по аспекту. Например, используя мой пример вкладки dotchart(as.numeric(tab$val), labels=tab$names, groups=tab$groups). Является ли это возможным?
Мрррау
@mrrrau Да, смотрите мои изменения.
Джоран
21
Для будущих читателей dropотбрасывает любые уровни факторов, которые не использовались ни в одном из аспектов графика, и scalesотбрасывает все уровни факторов, которые не использовались в определенном аспекте графика. Это заняло у меня некоторое время, чтобы понять из этого поста, поэтому я решил уточнить здесь, чтобы избавить кого-то еще от неприятностей.
Джейк Фишер
@JakeFisher Спасибо за указание на это! Довольно полезно!
Стивен