Giảm các mức không sử dụng trong các khía cạnh với ggplot2 [đã đóng]


19

Có thể giảm các mức không được sử dụng trong các khía cạnh của ggplot2s không? Đây là mã của tôi:

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

Tôi đã thử drop=Tchuyển đổi nhưng nó không giúp đỡ. Tôi đang làm gì sai?


Đối với các câu hỏi lập trình thuần túy (không phải số liệu thống kê) như thế này, vui lòng di chuyển sang StackOverflow
smci

Câu trả lời:


27

Dữ liệu ví dụ của bạn không có bất kỳ mức không sử dụng nào để giảm. Kiểm tra hành vi trong ví dụ này:

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

Có thể là bạn đang tìm cách thay đổi các yếu tố nào đang vẽ trên trục tung trong mỗi khía cạnh, trong trường hợp đó bạn muốn đặt scalesđối số và sử dụng facet_wrap:

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

Oh tôi thấy bây giờ những gì nó làm. Ý định của tôi là chỉ vẽ các cấp độ đó trong mọi khía cạnh, mà thực sự được nhóm theo khía cạnh. Giống như, sử dụng ví dụ tab của tôi , dotchart(as.numeric(tab$val), labels=tab$names, groups=tab$groups). Có thể không?
mrrrau

@mrrrau Vâng, xem chỉnh sửa của tôi.
Joran

21
Đối với những người đọc trong tương lai, dropgiảm bất kỳ cấp độ yếu tố nào không được sử dụng trong bất kỳ khía cạnh nào của cốt truyện, trong khi scalesgiảm bất kỳ cấp độ yếu tố nào không được sử dụng trong một khía cạnh cụ thể của cốt truyện. Điều này khiến tôi mất một thời gian để hiểu từ bài đăng này, vì vậy tôi nghĩ rằng tôi đã làm rõ ở đây để cứu người khác khỏi rắc rối.
Jake Fisher

@JakeFisher Cảm ơn bạn đã chỉ ra điều này! Khá hữu ich!
Steven
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.