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?


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.