2012-11-08 21 views
10

Izgara düzeniyle ilgili bir soru sordum HERE ve müthiş bir yanıt aldım. Şimdi araziler arasındaki boşluğu azaltmak istiyorum ama bir hata olsun. Önce çalışmakta olan kodu ve sonra hata kodunu (denediğimi) sunarım. Aslında grid.arrange'u bulamıyorum ve her zaman gridExtra'dan geldiğini farz ettim, ancak hatalı olabilirim.grid.arrange grafiği arasındaki boşluk azaltın.

yüzden 2 parça:

  1. nasıl düzenlemek ızgara ile arsa arasındaki boşluğu azaltabilir Ben belgeleri bulabilirsiniz
  2. yaklaşık grid.arrange (Baptiste seni gridExtra yüzden benim düşünme veya kullanımını lütfen düzeltin korumak biliyorum Ben bu şekilde tasarlanmıştı bunu kullanmıyorum eğer bir paket.)

İyi kod kötü uzay

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) 

Kötü kodu (benim deneyin)

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) 

hatası:

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

cevap

11

Ben yanlış anlama oldu 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

Evet, doc diyor ki: plot.margin | Tüm arsa etrafında marj (üst, sağ, alt ve sol kenar boşlukları olan birim)

İlgili konular