Ggplot2 ile fasetlerde kullanılmayan seviyeleri düşürme [kapalı]


19

Ggplot2s yönlerinde kullanılmayan seviyeleri düşürmek mümkün mü? Bu benim kodum:

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=TAnahtarı denedim ama yardımcı olmuyor. Neyi yanlış yapıyorum?


Bunun gibi saf programlama (istatistikler değil) soruları için lütfen StackOverflow
smci

Yanıtlar:


27

Örnek verilerinizde düşecek herhangi bir kullanılmamış seviye yoktur. Bu örnekteki davranışı kontrol edin:

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()

Her bir taraftaki dikey eksende hangi faktörlerin çizildiğini değiştirmek istiyor olabilirsiniz, bu durumda scalesargümanı ayarlamak ve kullanmak istersiniz facet_wrap:

ggplot(tab, aes(names,val)) + 
    geom_point() + coord_flip() + 
    theme_bw() + 
    facet_wrap(~groups,nrow = 3,scales = "free_x")

Şimdi ne yaptığını görüyorum. Niyetim, sadece her fasette, aslında faset tarafından gruplandırılan seviyeleri çizmekti. Sekme örneğimi kullanarak dotchart(as.numeric(tab$val), labels=tab$names, groups=tab$groups). Mümkün mü?
mrrrau

@mrrrau Evet, düzenlememi görün.
joran

21
Gelecekteki okuyucular için, arsanın herhangi bir yüzünde dropkullanılmayan herhangiscales bir faktör seviyesini düşürürken, arsanın belirli bir yüzünde kullanılmayan herhangi bir faktör seviyesini düşürür. Bu yazıdan anlamam biraz zaman aldı, bu yüzden başka birini beladan kurtarmak için burada açıklığa kavuşacağımı düşündüm.
Jake Fisher

@JakeFisher Bunu işaret ettiğiniz için teşekkürler! Oldukça yardımcı!
Steven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.