Menjatuhkan level yang tidak terpakai di sisi dengan ggplot2 [ditutup]

19

Apakah mungkin untuk menjatuhkan level yang tidak digunakan dalam aspek ggplot2s? Ini kode saya:

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

Saya mencoba drop=Tsaklar tetapi tidak membantu. Apa yang saya lakukan salah?

mrrrau
sumber
Untuk pertanyaan pemrograman murni (bukan statistik) seperti ini, silakan migrasi ke StackOverflow
smci

Jawaban:

27

Contoh data Anda tidak memiliki level yang tidak terpakai untuk turun. Periksa perilaku dalam contoh ini:

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

Mungkin Anda ingin mengubah faktor mana yang diplot pada sumbu vertikal di setiap sisi, dalam hal ini Anda ingin mengatur scalesargumen dan menggunakan facet_wrap:

ggplot(tab, aes(names,val)) + 
    geom_point() + coord_flip() + 
    theme_bw() + 
    facet_wrap(~groups,nrow = 3,scales = "free_x")
joran
sumber
Oh saya mengerti sekarang apa fungsinya. Niat saya adalah untuk memplot hanya level-level itu di setiap segi, yang sebenarnya dikelompokkan berdasarkan segi itu. Seperti, menggunakan contoh tab saya dotchart(as.numeric(tab$val), labels=tab$names, groups=tab$groups),. Apa itu mungkin?
mrrrau
@rrrau Ya, lihat edit saya.
joran
21
Untuk pembaca masa depan, droptetes tingkat faktor apa saja yang tidak digunakan dalam setiap segi plot, sedangkan scalestetes tingkat faktor apa saja yang tidak digunakan dalam segi tertentu dari plot. Butuh beberapa saat untuk memahami dari pos ini, jadi saya pikir saya akan mengklarifikasi di sini untuk menyelamatkan orang lain masalahnya.
Jake Fisher
@JakeFisher Terima kasih telah menunjukkan ini! Cukup membantu!
Steven