วางระดับที่ไม่ได้ใช้ใน facets ด้วย ggplot2 [ปิด]


19

เป็นไปได้หรือไม่ที่จะลดระดับที่ไม่ได้ใช้ใน ggplot2s facets? นี่คือรหัสของฉัน:

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สวิตช์ แต่ไม่ช่วย ผมทำอะไรผิดหรือเปล่า?


สำหรับคำถามแบบบริสุทธิ์ (ไม่ใช่สถิติ) คำถามเช่นนี้โปรดย้ายไปยัง 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")

โอ้ฉันเห็นแล้วตอนนี้มันทำอะไร ความตั้งใจของฉันคือการพล็อตเฉพาะระดับเหล่านั้นในทุกแง่มุมที่จัดกลุ่มตามจริง กดdotchart(as.numeric(tab$val), labels=tab$names, groups=tab$groups)ไลค์โดยใช้ตัวอย่างแท็บของฉัน เป็นไปได้ไหม?
mrrrau

@mrrrau ใช่ดูการแก้ไขของฉัน
joran

21
สำหรับผู้อ่านในอนาคตให้dropลดระดับปัจจัยใด ๆ ที่ไม่ได้ใช้ในด้านใด ๆของพล็อตในขณะที่scalesลดระดับปัจจัยใด ๆ ที่ไม่ได้ใช้ในด้านใดด้านหนึ่งของพล็อต สิ่งนี้ใช้เวลาสักครู่เพื่อทำความเข้าใจจากโพสต์นี้ดังนั้นฉันคิดว่าฉันจะชี้แจงที่นี่เพื่อช่วยคนอื่นให้ประสบปัญหา
Jake Fisher

@ JakeFisher ขอบคุณที่ชี้ให้เห็น! มีประโยชน์มาก!
Steven
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.