2016-11-29 10 views
5

मैं grid.arrange का उपयोग करके सूची से ggplot2 प्लॉट्स का बहुमत बनाना चाहता हूं लेकिन पंक्तियों से इसे करने से पहले कॉलम द्वारा व्यवस्थित करना चाहता हूं।grid.arrange ggplot2 सूचियों का उपयोग करते हुए पंक्तियों के बजाय कॉलम द्वारा ggplot2 प्लॉट्स

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

मैं जानता हूँ कि मैं यह कर सकता:

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

लेकिन यह ऊपर से नीचे से पहले बाएं से दाएं भरता है।

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

लेकिन मिल Error: length(widths) == ncol is not TRUE

कोई भी विचार:

मैं इस की कोशिश की है?

उत्तर

6

आप एक सूची और as.table पैरामीटर स्तंभ-वार को भरने के लिए पारित करने के लिए उपयोग कर सकते हैं grobs पैरामीटर, इसलिए c साथ चपटा, आप सभी की जरूरत

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

grid plot

है आप एक और अधिक चाहते हैं

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) 

: जटिल लेआउट, layout_matrix पैरामीटर का उपयोग

विवरण के लिए the arrangeGrob vignette देखें।

+0

धन्यवाद एलिस्टायर। 'Grob =' तर्क का उपयोग करने वाला आपका पहला उदाहरण अभी भी ऊपर से नीचे, fyi से पहले बाएं से दाएं भरता है, लेकिन शायद आप उसे जानते थे? आपका दूसरा उदाहरण काम करता है! बहुत बहुत धन्यवाद - मैं इसे पिछले 4h, कोई मजाक नहीं समझने की कोशिश कर रहा हूं। – Bonono

+2

ओह। कॉलम-वार भरने के लिए आप 'as.table = FALSE' जोड़ सकते हैं; मैं संपादित करूंगा। – alistaire