2016-11-29 30 views
5

grid.arrange kullanarak bir listeden çok sayıda ggplot2 çizimini oluşturmak istiyorum ancak bunları satırlara göre sütunlara göre düzenleyin.grid.arrange ggplot2, listelerini kullanarak satırlar yerine satırlara göre sıralar

do.call(grid.arrange,c(gg_list1,gg_list2 , ncol = 2, nrow = 3)) 

ama yukarıdan aşağıya önce soldan sağa doldurur:

gg_list1 <- list(qplot(mpg, disp, data = mtcars), 
       qplot(hp, wt, data = mtcars), 
       qplot(qsec, wt, data = mtcars)) 

gg_list2 <- list(qplot(mpg, disp, data = mtcars), 
       qplot(hp, wt, data = mtcars), 
       qplot(qsec, wt, data = mtcars)) 

Bunu yapabileceğini biliyorum.

do.call(grid.arrange, c(gg_list1, arrangeGrob(gg_list2, nrow = 3), ncol = 2)) 

Ama Error: length(widths) == ncol is not TRUE

Herhangi bir fikir olsun:

Bu denedim? Eğer daha istiyorsanız

cevap

6

Bir liste ve sütun akıllıca doldurmak için as.table parametre geçirmek için grobs parametresini kullanabilirsiniz, böylece c ile düzleştirilmiş, tek ihtiyacınız

grid.arrange(grobs = c(gg_list1, gg_list2), ncol = 2, as.table = FALSE) 

grid plot

olduğunu

my_layout <- rbind(c(1, 1:3, 4), c(1, 1:3, 4), c(1, 1:3, 5), c(1, 1:3, 6)) 

my_layout 
##  [,1] [,2] [,3] [,4] [,5] 
## [1,] 1 1 2 3 4 
## [2,] 1 1 2 3 4 
## [3,] 1 1 2 3 5 
## [4,] 1 1 2 3 6 

grid.arrange(grobs = c(gg_list1, gg_list2), layout_matrix = my_layout) 

: karmaşık düzen, layout_matrix parametresini kullanın

Ayrıntılar için bkz. the arrangeGrob vignette.

+0

Teşekkürler Alistaire. 'Grob = 'argümanı kullanan ilk örneğiniz hala soldan sağa, yukarıdan aşağıya doğru doldurur, ama sen bunu biliyordun? 2. Örneğiniz ÇALIŞTI! Çok teşekkür ederim - Son 4 saat boyunca bunu anlamaya çalışıyorum, şaka yapıyorum. – Bonono

+2

Oops. Sütun bilgisini doldurmak için 'as.table = FALSE' ekleyebilirsiniz. Ben düzenleyeceğim – alistaire