2012-11-08 38 views
10

Tôi đã đặt câu hỏi HERE về sắp xếp lưới và nhận được phản hồi tuyệt vời. Tôi muốn giảm không gian giữa các ô hiện tại nhưng bị lỗi. Trước tiên, tôi trình bày mã hoạt động và sau đó là mã lỗi (những gì tôi đã thử). Tôi thực sự không thể tìm thấy grid.arrange và luôn giả sử nó đến từ gridExtra nhưng tôi có thể không chính xác.giảm khoảng cách giữa các ô lưới. Các ô xếp kề

nên 2 phần:

  1. Làm thế nào tôi có thể giảm khoảng cách giữa các lô với lưới sắp xếp
  2. Tôi có thể tìm tài liệu ở đâu về grid.arrange (Baptiste Tôi biết bạn duy trì gridExtra vì vậy hãy sửa suy nghĩ hoặc sử dụng của tôi về gói nếu tôi không sử dụng nó theo cách nó được dự định.)

Tốt đang không gian xấu

require(ggplot2);require(gridExtra) 
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() + 
    coord_flip() + ylab("") 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 


gA <- ggplot_gtable(ggplot_build(A)) 
gB <- ggplot_gtable(ggplot_build(B)) 
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3]) 
gA$widths[2:3] <- as.list(maxWidth) 
gB$widths[2:3] <- as.list(maxWidth) 
grid.arrange(gA, gB, ncol=1) 

đang Xấu (thử của tôi)

require(ggplot2);require(gridExtra) 
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() + 
    coord_flip() + ylab("") + theme(plot.margin= unit(1, "cm")) 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 


gA <- ggplot_gtable(ggplot_build(A)) 
gB <- ggplot_gtable(ggplot_build(B)) 
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3]) 
gA$widths[2:3] <- as.list(maxWidth) 
gB$widths[2:3] <- as.list(maxWidth) 
grid.arrange(gA, gB, ncol=1) 

Lỗi:

Error in `[.unit`(theme$plot.margin, 2) : 
    Index out of bounds (unit subsetting) 

Trả lời

11

tôi đã hiểu lầm ggplot:

require(ggplot2);require(gridExtra) 
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() + 
    coord_flip() + ylab("") + theme(plot.margin= unit(c(1, 1, -1, 1), "lines")) 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() + 
    theme(plot.margin= unit(rep(.5, 4), "lines")) 


gA <- ggplot_gtable(ggplot_build(A)) 
gB <- ggplot_gtable(ggplot_build(B)) 
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3]) 
gA$widths[2:3] <- as.list(maxWidth) 
gB$widths[2:3] <- as.list(maxWidth) 
grid.arrange(gA, gB, ncol=1) 
-2

Vâng, doc nói: plot.margin | lề quanh toàn bộ cốt truyện (đơn vị có kích thước của lề trên, cạnh phải, dưới cùng và lề trái)

Các vấn đề liên quan